J’ai 3 fichiers
1 fichier
14/09/15 14/09/15 14/09/15 14/09/15 14/09/15
2 fichiers
14/09/01 14/09/01 14/09/01 14/09/01 14/09/01
et 3file
15/09/14,11-37,01/09/14,1224A,0G,71%,RGS 15/09/14,11-41,01/09/14,2700A,0G,94%,RAN 15/09/14,11-43,01/09/14,2701A,0G,100%,RAN 15/09/14,11-44,01/09/14,2701B,0G,92%,RAN 15/09/14,11-46,01/09/14,2708A,0G,88%,RAN
J’ai besoin de remplacer la colonne 1 de 3f par la colonne 1 de 1f et la troisième par 3f par la colonne 1 de 2f
Comment puis-je remplacer en utilisant awk?
Le code awk suivant sera utile
$ awk 'BEGIN{OFS=FS=","}NF==1{line[FNR]=line[FNR]","$0} NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}' 1file 2file 3file 14/09/15,14/09/01,01/09/14,1224A,0G,71%,RGS 14/09/15,14/09/01,01/09/14,2700A,0G,94%,RAN 14/09/15,14/09/01,01/09/14,2701A,0G,100%,RAN 14/09/15,14/09/01,01/09/14,2701B,0G,92%,RAN 14/09/15,14/09/01,01/09/14,2708A,0G,88%,RAN
Ce qu’il fait??
OFS=FS=","
définit le séparateur de champs de sortie OFS
et le séparateur de champs FS
comme ,
NF==1{line[FNR]=line[FNR]","$0}
Si le nombre de champs / columsn, NF
est un, enregistre la valeur dans la variable de line
séparée par des virgules
NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}
NF>1{split(line[FNR], a); $1=a[2]; $2=a[3]; print $0}
prend l’action lorsque NF
supérieur à un
split(line[FNR], a);
diviser la variable de line
à a
tableau
$1=a[2]; $2=a[3];
définit la première et la deuxième colonne
print $0
imprime l’intégralité de l’enregistrement