Remplacer la colonne par awk

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