Supongamos que tengo 2 archivos, ABC.txt
&PQR.txt
con los datos que se muestran a continuación como ejemplo:
ABC.txt:
ABC DEF
PQR.txt:
PQR XYZ
Quiero grep
columna 1 de ambos archivos y escribir en un tercer archivo de texto. ¿Cómo se puede hacer?
Mi salida esperada es (salida.txt):
ABC PQR
Respuesta aceptada:
Aquí hay un par de formas:
-
Usando
paste
ycut
:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQR
Si su sistema no admite la sustitución de procesos, use esto en su lugar:
$ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb
-
Usando
awk
(gracias @Costas):awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txt
La variable especial
FNR
es el número de línea del archivo de entrada actual yNR
es el número de línea de la entrada en general, independientemente del archivo del que provenga. Los dos son iguales solo mientras se lee el primer archivo de entrada. Entonces, los primeros campos del primer archivo se guardan en ela
matriz (a[FNR]=$1
) cuyas claves son números de línea y cuyos valores son los primeros campos. Luego, cuando se llega al segundo archivo, imprimimos el valor correspondiente a su número de línea (a[NR]
) y el primer campo de la línea actual.