Hay una herramienta dedicada para que: paste
. Concatena cada línea completa del primer archivo con la línea correspondiente del segundo archivo; Puede eliminar columnas no deseadas antes o después. Por ejemplo, suponiendo que sus columnas están delimitadas por tabuladores:
paste file1.txt file2.txt | cut -f 1,2,3,6
Aquí hay una manera de prefiltrar ambos archivos que se basan en la sustitución del proceso ksh / bash / zsh.
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk está orientado principalmente a procesar un archivo a la vez, pero puede llamar getline
para leer de otro archivo en paralelo.
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
Hasta ahora, he asumido que desea hacer coincidir la línea 1 del archivo 1 con la línea 1 del archivo 2, la línea 2 del archivo 1 con la línea 2 del archivo 2, etc. Si desea hacer coincidir el contenido de una columna, eso es un materia completamente diferente. join
hará el trabajo siempre que la columna que desee hacer coincidir esté ordenada.
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt