Re: awk et print

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: guilde
CC: ML Guilde
Sujet: Re: awk et print
Le 12/02/2020 à 14:13, guilde.nt@??? a écrit :
>> $ awk -F \; 'NR==1 {print ; next} {gsub(" ","",$8); gsub("+33","70",$8);
>> gsub(" ","",$9); gsub("+33","70",$9); gsub(" ","",$10);
>> gsub("+33","70",$10); print $1";"$2";"$3";"$4";"$5";"$6";"$7";"$8";"$9";"$10";"$11";"$12";"$13";"$14";"$15";"$16";"$17";"$18";"$19";"$20";"$21";"$22";"$23";"$24";"$25";"$26";"$27";"$28";"$29";"$30";"$31";"$32";"$33";"$34";"$35";"$36";"$37}'
>> contacts.csv > test-contact.csv
>>
>> Cela fonctionne bien.
>>
>> Le seul souci, pour le print j'ai remis tous les $x.
>> Y-a-t-il une solution plus simple pour le print?
>
> $ awk -F \; -v OFS=\; '
>    NR==1 {...
>    1 {
>        gsub(...)
>        ...
>        print # imprime $0
>    }
> '

>
> OFS : output field separator
>


Merci

  -F     Spécifie les séparateurs de champs (en entrée)
OFS     separateur de champs pour la sortie


OFS, c'est ce qui me manquait. Maintenant le print sans rien derrière
fonctionne.

Je viens de trouver {FS=OFS=":"} que j'ai traduit par -v FS=OFS=\;

Je voulais mettre cette commande dans un bash où je donnerais en
paramètre le fichier en entrée ainsi que le séparateur de champ

j'aurais donc $1 le fichier et $2 le séparateur de champ.

Le séparateur de champ peut être ; , ou \t

Je viens de tester avec
separ=";"; awk -v FS=OFS=$separ
separ=","; awk -v FS=OFS=$separ
separ="\t"; awk -v FS=OFS=$separ

Je vais pouvoir mettre la commande dans mon script bash.

Merci
Anne



Anne