Sed : inserer pattern dans une ligne
Résolu
bijnok
Messages postés
62
Date d'inscription
Statut
Membre
Dernière intervention
-
bijnok Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
bijnok Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
en shell, je souhaite inserer un certains nombre de champs après toutes les occurrences d'un pattern sur une même ligne.
Exemple:
J'ai essayé :
mais cela remplace la chaine 1,2,3,4,5, par 0,0,0, et je ne trouve pas le moyen d'ajouter mes zeros sans supprimmer le début... (1,2,3,4,5,.. ne reflète pas la réalité mais permet juste de repérer les positions dans cet exemple).
y a t'il un moyen de capturer le pattern
Merci par avance à ceux qui liront,
Bijnok
Bonjour,
en shell, je souhaite inserer un certains nombre de champs après toutes les occurrences d'un pattern sur une même ligne.
Exemple:
position=5 nombreZero=3 #mo, fichier data contient: BLABLABLA (1,2,3,4,5,6,7,8,9),(1,2,3,4,5,6,7,8,9), BLUBLU (1,2,3,4,5,6,7,8,9)); # le but est d'inserer trois 0 après cinq occurences de "chiffre," ce qui donnerait : BLABLABLA (1,2,3,4,5,0,0,0,6,7,8,9),(1,2,3,4,5,0,0,0,6,7,8,9), BLUBLU (1,2,3,4,5,0,0,0,6,7,8,9));
J'ai essayé :
more data | sed '/{s/"[0-9],"{$position,}/"0,"{$nombreZero,}/g}'
mais cela remplace la chaine 1,2,3,4,5, par 0,0,0, et je ne trouve pas le moyen d'ajouter mes zeros sans supprimmer le début... (1,2,3,4,5,.. ne reflète pas la réalité mais permet juste de repérer les positions dans cet exemple).
y a t'il un moyen de capturer le pattern
"[0-9],"{$position,}pour ensuite le réinsérer avec les 0 ?? j'ai essayé avec sed mais pas moyen de trouver quelques choses qu fonctinnent ET qui me donne le résultat attendu.
Merci par avance à ceux qui liront,
Bijnok
A voir également:
- Sed : inserer pattern dans une ligne
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Sed crlf - Astuces et Solutions
- Sed - Remplacement texte par retour à la ligne ? ✓ - Forum Linux / Unix
- Sed supprimer ligne vide - Forum Linux / Unix
J'essaie de remplacer les 0,0,0, par une variable en la protégeant comme il faut mais pour l'instant je ne trouve pas, il semblerait que tu aies raison...
J'ai vraiment besoin que cela soit dynamique, apparement je vais être obligé de me mettre à awk pour faire ce que je ouhaite.
Merci Jicipy
Pourquoi 0,0,0, ne peut être remplacé par ? alors que j'arrive à remplacer 1,2,3,4,5, par 0,0,0, avec des variables protégées comme il faut?
Je vais tenter autre chose du genre créer la ligne de commande sed dynamiquement puis l'interpréter.
exemple:
puis interpréter ce qu'il y a dans test.
Encore merci
Puis ensuite :
Il faut combien d'années pour arriver à ce niveau là en shell ? Parce qu'on te retrouve souvent sur le forum et à chaque fois avec une solution propre et efficace...
Merci encore à toi !!!
Problème résolu
___Edit___
NB : probleme si on cherche a ajouter les 0 en derniere position dans les parentheses; enlever 1 a position et remplacer B par B=",0" et dans sed mettre la virgule avant [0-9]
___Edit 2___
ajouter une * après [0-9] pour matcher de vrais nombres