Bagaimana cara membuat file baru menggabungkan kolom selektif dari dua file terpisah menggunakan awk? Tanpa mengacaukan pesanan elemen file KEDUA.
Contoh: File 3 dapat berisi kolom 1,2,3 dari File 1 dan kolom 4 dari File 2.
File 1
A 23 8 T
A 63 9 9
B 45 3 J
File 2
A 0
A 6
B 5
File 3
A 23 8 0
A 63 9 6
B 45 3 5
text-processing
awk
columns
dovah
sumber
sumber
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt
paste file1 file2
dan kemudian mencetak bidang yang dipilih diawk
.file2
dalam memori, yang bisa menjadi penghalang jika file berukuran besar. Ada cara yang lebih sederhana untuk melakukan ini tanpa overhead memori (lihat jawaban saya).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:Berikut adalah cara untuk menyaring kedua file yang bergantung pada substitusi proses ksh / bash / zsh.
Awk terutama diarahkan untuk memproses satu file pada satu waktu, tetapi Anda dapat menelepon
getline
untuk membaca dari file lain secara paralel.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.sumber