Modifier le 3ème champ des lignes d'un fichier

Résolu
bob737 Messages postés 157 Statut Membre -  
dubcek Messages postés 19021 Statut Contributeur -
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!! ;-)
A voir également:

2 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

Voir ici, c'est le même principe.
0
bob737 Messages postés 157 Statut Membre
 
bonjour,

oui, c'est même moi qui ai posé la question mais j'ai du mal à l'adapter à la condition.
0
dubcek Messages postés 19021 Statut Contributeur 5 638
 
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
0
bob737 Messages postés 157 Statut Membre
 
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.
0
zipe31 Messages postés 38797 Statut Contributeur 6 433 > bob737 Messages postés 157 Statut Membre
 
awk 'BEGIN {FS=OFS=";"} {$3=gensub("(.*)_.*", "\\1", 1, $3); print}'
0
dubcek Messages postés 19021 Statut Contributeur 5 638
 
supprime _ et tout ce qui suit
$ awk 'BEGIN {FS=OFS=";"} {sub("_.*$", "", $3); print}' fichier
champ1;champ2;TOTO;champ3;champ4
champ1;champ2;TITI;champ3;champ4
0
bob737 Messages postés 157 Statut Membre > dubcek Messages postés 19021 Statut Contributeur
 
super. Merci.
0
dubcek Messages postés 19021 Statut Contributeur 5 638
 
awk: 0602-553 Function gensub is not defined.
essayer avec gawk
0