Eh bien, j'ai plusieurs fichiers et j'ai du mal à les rejoindre avec awk. Voici trois exemples de fichiers:Comment joindre plusieurs fichiers par awk
Filea
2 2 31771 15 5327353 4.73E-04 1 1
2 2 40642 23 27428869 -8.29E-04 1 1
2 2 21517 7 89002990 -2.41E-04 1 1
2 2 33787 16 44955568 2.86E-05 1 1
FICHB
2 2 31771 15 5327353 5.07E-04 1 1
2 2 40642 23 27428869 5.45E-04 1 1
2 2 21517 7 89002990 1.85E-04 1 1
2 2 33787 16 44955568 3.73E-04 1 1
Filec
2 2 31771 15 5327353 4.28E-04 1 1
2 2 40642 23 27428869 -7.55E-04 1 1
2 2 21517 7 89002990 -2.01E-04 1 1
2 2 33787 16 44955568 3.09E-05 1 1
Chaque fichier a 8 colonnes, mais je ne pas besoin de colonnes 1, 2 , 7 et 8. Les colonnes 3, 4 et 5 sont communes à tous les fichiers, ce sont peut-être les colonnes de référence pour joi ning les fichiers, et la colonne 6 serait l'information différente de chaque fichier. En général, mon fichier final ressemblerait à ceci:
Finalfile
31771 15 5327353 4.73E-04 5.07E-04 4.28E-04
40642 23 27428869 -8.29E-04 5.45E-04 -7.55E-04
21517 7 89002990 -2.41E-04 1.85E-04 -2.01E-04
33787 16 44955568 2.86E-05 3.73E-04 3.09E-05
J'ai essayé les commandes suivantes:
awk 'NR==FNR{a[$3]=$6;next}{print $3"\t"$4"\t"$5"\t"$6"\t"a[$3]}' FileA FileB FileC > Finalfile
Mais malheureusement, il ne fonctionne qu'avec deux fichiers, et je reçois quelque chose comme ce:
2 2 31771 15 5327353 4.73E-04 5.07E-04
2 2 40642 23 27428869 -8.29E-04 5.45E-04
2 2 21517 7 89002990 -2.41E-04 1.85E-04
2 2 33787 16 44955568 2.86E-05 3.73E-04
Quelqu'un peut-il aider? Rappelez-vous qu'il existe plusieurs fichiers (10), pas seulement trois. Merci beaucoup!
J'apprécie la compacité plus que le gars à côté, mais je serais probablement '{ a [$ 3 OFS $ 4 OFS $ 5] = a [$ 3 OFS $ 4 OFS $ 5] (un [$ 3 OFS $ 4 OFS $ 5] == ""? "": OFS) 6 $} '. Autre que cela <3. –
Oui tout à fait plus expressif @JamesBrown +1 – klashxx
Merci, j'apprécie votre aide les gars. –