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
pasteycut:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQRSi 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.txtLa variable especial
FNRes el número de línea del archivo de entrada actual yNRes 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 elamatriz (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.