Awk : expression reguliere remplacer premiere occurence par sub
Résolu
isidorus
-
isidorus -
isidorus -
Bonjour,
j'ai un fichier texte contenant par exemple :
je souhaiterais remplacer ce qui est en gras par disons 'ink=12z88', ce qui devrait donner :
j'ai essayé :
mais ça donne :
comment dois je m'y prendre ? sachant que je dois passer par awk, car ce n'est qu'une partie du code.
Merci
j'ai un fichier texte contenant par exemple :
lstt ction=15,ink=8,mardi=toto2457$ manip 1,2,3,ink=8,mardi=toto244,66 lstt ction=15,ink=b19,mardi=toto2457$ Support 1,3,ink=8,mardi=toto244,7
je souhaiterais remplacer ce qui est en gras par disons 'ink=12z88', ce qui devrait donner :
lstt ction=15,ink=12z88,mardi=toto2457$ manip 1,2,3,ink=8,mardi=toto244,66 lstt ction=15,ink=12z88,mardi=toto2457$ Support 1,3,ink=8,mardi=toto244,7
j'ai essayé :
awk ' { var=$0 sub(/ink=.*,/, "ink=12z88,", var) print var } ' text
mais ça donne :
lstt ction=15,ink=33,7 lstt ction=15,ink=33,7
comment dois je m'y prendre ? sachant que je dois passer par awk, car ce n'est qu'une partie du code.
Merci
A voir également:
- Awk : expression reguliere remplacer premiere occurence par sub
- Awk dédoublonner un print ✓ - Forum Shell
- Suppression de lignes en awk ✓ - Forum Shell
- Awk : tri selon la date ✓ - Forum Shell
- SED ou Awk sous windows ?? - Forum Windows
- Awk : remplacement d'un élément conditionnel - Forum Shell
3 réponses
salut,
L'astérisque crée une regex gourmande: il va faire correspondre le motif jusqu'à la dernière limite (dans ton cas la dernière virgule)
ceci va fonctionner
Pourquoi ne divises-tu pas tes enregistrements en champs délimités par une virgule? tu n'aurais qu'à modifier le deuxième champ.
L'astérisque crée une regex gourmande: il va faire correspondre le motif jusqu'à la dernière limite (dans ton cas la dernière virgule)
ceci va fonctionner
sub(/ink=[^,]*/, "ink=12z88,", var)
Pourquoi ne divises-tu pas tes enregistrements en champs délimités par une virgule? tu n'aurais qu'à modifier le deuxième champ.
parce que j'utilise déjà ';' pour FS