Ada alat khusus untuk itu: paste
. Ini menggabungkan setiap baris penuh dari file pertama dengan baris yang sesuai dari file kedua; Anda dapat menghapus kolom yang tidak diinginkan sebelum atau sesudah. Misalnya, dengan asumsi bahwa kolom Anda dibatasi-tab:
paste file1.txt file2.txt | cut -f 1,2,3,6
Berikut adalah cara untuk menyaring kedua file yang bergantung pada substitusi proses ksh / bash / zsh.
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk terutama diarahkan untuk memproses satu file pada satu waktu, tetapi Anda dapat menelepon getline
untuk membaca dari file lain secara paralel.
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
Sejauh ini saya berasumsi bahwa Anda ingin mencocokkan baris 1 dari file 1 dengan baris 1 dari file 2, baris 2 dari file 1 dengan baris 2 dari file 2, dll. Jika Anda ingin mencocokkan isi kolom, itu adalah hal yang sama sekali berbeda. join
akan melakukan pekerjaan asalkan kolom yang ingin Anda cocok diurutkan.
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt