GNU/Linux >> Tutoriales Linux >  >> Linux

¿Tomar la primera columna de 2 archivos y escribirla en un tercer archivo?

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 y cut :

    $ 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 y NR 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 el a 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.


Linux
  1. Cómo prevenir y recuperarse de la eliminación accidental de archivos en Linux

  2. ¿Imprimir el contenido del archivo sin la primera y la última línea?

  3. Lum:¿reemplazar valores comunes en dos archivos según la primera columna?

  4. ¿Cómo dividir un archivo y mantener la primera línea en cada una de las piezas?

  5. ¿Cómo eliminar las líneas que aparecen en el archivo B de otro archivo A?

Descargar archivos con Wget en Linux Shell - Explicación y ejemplos

Evite la eliminación o modificación accidental de archivos y carpetas en Linux

Gestión de archivos de Linux desde la terminal

¿Leer y escribir en el mismo archivo en Linux sin sobrescribirlo?

¿Escribir en un archivo .txt?

¿Cómo eliminar la primera columna (que en realidad son nombres de fila) de un archivo de datos en Linux?