Modifier le 3ème champ des lignes d'un fichier
Résolu
bob737
Messages postés
157
Statut
Membre
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaiterais modifier les 3eme champ de toutes les lignes d'un fichier dans le cas suivant:
TOTO_XXXX devient TOTO
si possible sans faire de boucle sur le fichier en traitant ligne par ligne avec les awk.
exemple:
champ1;champ2;TOTO_XXX;champ3;champ4
champ1;champ2;TITI;champ3;champ4
devient
champ1;champ2;TOTO;champ3;champ4
champ1;champ2;TITI;champ3;champ4
Merci!! ;-)
Je souhaiterais modifier les 3eme champ de toutes les lignes d'un fichier dans le cas suivant:
TOTO_XXXX devient TOTO
si possible sans faire de boucle sur le fichier en traitant ligne par ligne avec les awk.
exemple:
champ1;champ2;TOTO_XXX;champ3;champ4
champ1;champ2;TITI;champ3;champ4
devient
champ1;champ2;TOTO;champ3;champ4
champ1;champ2;TITI;champ3;champ4
Merci!! ;-)
2 réponses
-
-
hello
$ cat fichier
champ1;champ2;TOTO_XXX;champ3;champ4
champ1;champ2;TITI;champ3;champ4
$ awk 'BEGIN {FS=OFS=";"} {$3=gensub("(TOTO).*", "\\1", 1, $3); print}' fichier
champ1;champ2;TOTO;champ3;champ4
champ1;champ2;TITI;champ3;champ4-
Merci mais j'ai du mal formuler car le 3eme champ n'est pas forcement TOTO. Je dois extraire la partie gauche du 3eme champ si le 3eme champ contient "_"
et ça me sort une erreur:
awk: 0602-553 Function gensub is not defined.
The input line number is 1. The file is test.
The source line number is 1.
merci. -
-
-