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
paste
etcut
:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQR
Si 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.txt
La variable spéciale
FNR
est le numéro de ligne du fichier d'entrée courant etNR
est 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 lea
tableau (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.