Supposons que j'ai 2 fichiers, ABC.txt &PQR.txt avec les données présentées ci-dessous à titre d'exemple :
ABC.txt :
ABC DEF
PQR.txt :
PQR XYZ
Je veux grep colonne 1 des deux fichiers et écrivez dans un troisième fichier texte. Comment cela peut-il être fait ?
Ma sortie attendue est (output.txt):
ABC PQR
Réponse acceptée :
Voici plusieurs façons :
-
Utiliser
pasteetcut:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQRSi votre système ne prend pas en charge la substitution de processus, utilisez ceci à la place :
$ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb -
Utiliser
awk(merci @Costas):awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txtLa variable spéciale
FNRest le numéro de ligne du fichier d'entrée courant etNRest le numéro de ligne de l'entrée en général, quel que soit le fichier d'où elle provient. Les deux ne sont égaux que pendant la lecture du premier fichier d'entrée. Ainsi, les premiers champs du premier fichier sont enregistrés dans leatableau (a[FNR]=$1) dont les clés sont des numéros de ligne et dont les valeurs sont les 1ers champs. Puis, lorsque le deuxième fichier est atteint, on imprime la valeur correspondant à son numéro de ligne (a[NR]) et le 1er champ de la ligne courante.