Saya memiliki dua file di mana saya ingin membuat yang ketiga yang berisi semua informasi.
file 1:
a 111
b 222
c 333
d 666
e 777
file 2:
111 x1
222 x2
333 x3
444 x4
555 x5
666 x6
777 x7
888 x8
Saya ingin menggabungkan mereka sebagai berikut:
111 x1 a
222 x2 b
333 x3 c
444 x4 0
555 x5 0
666 x6 d
777 x7 e
888 x8 0
catatan:
Kolom kedua file 1 adalah subset dari kolom pertama file 2
command-line
text-processing
gforce89
sumber
sumber
-e0
tidak perlu perl :)Menggunakan join:
Perintah join bergabung dengan garis dua file yang berbagi bidang data yang sama. Dalam hal ini: Bergabung dengan file2 dan file1 menggunakan bidang 1 (
-1 1
) dari file2 dan bidang 2 (-2 2
) dari file1.Outputnya adalah: "bidang gabungan, bidang 2 file2, bidang 1 file1" (
-o'0,1.2,2.1'
), jika ada bidang yang hilang cantumkan 0 (-e0
)Jika salah satu dari dua file memiliki lebih banyak catatan maka tambahkan (dalam hal ini file2) (
-a1
)Silakan merujuk ke halaman manual dari perintah join
sumber
Sedikit
awk
sihir:atau
Keluaran
Penjelasan
FNR==NR{a[$2]=$1;next}
Jalankan
file1
(FNR==NR
) dan buat struktur nilai kunci. Kuncinya adalah kolom kedua ($2
) darifile1
, nilainya adalah kolom pertama ($1
) darifile1
{if(a[$1]==""){a[$1]=0};print $1,$2,a[$1]}
Berlari
file2
danif(a[$1]==""){a[$1]=0}
Jika kunci pada kolom pertama (
$1
) difile2
tidak adafile1
, kita perlu a0
print $1,$2,a[$1]
Cetak (menggunakan
print
) kolom pertama dan keduafile2
dan nilai struktur nilai kunci dengan kunci kolom pertama ($1
) darifile2
atau
printf "%s%s%s%s%s\n",$1,FS,$2,FS,a[$1]}'
Cetak (menggunakan
printf
) kolom pertama dan keduafile2
dan nilai struktur nilai kunci dengan kunci kolom pertama ($1
) darifile2
.FS
adalah pemisah antara kolom, yang diambil dari file input"%s%s%s%s%s\n"
adalah format untuk output
%s
- Tali\n
- Garis barusumber
Menggunakan q :
Mungkin lebih mudah dibaca dengan cara ini.
sumber
q
ada dalam paketpython3-q-text-as-data
(Python 3) dan dalam paketpython-q-text-as-data
(Python 2).q
paket ini ? Saya sepertinya tidak dapat menginstal salah satupython-q-text-as-data
ataupython3-q-text-as-data
. "E: Tidak dapat menemukan paket python3-q-text-as-data". Sistem saya sudah telah terinstalpython
,python2.7
,python3
, danpython3.4
.