Perkenalan

Perkenalan

Perintah bergabung adalah contoh lain dari utilitas pemrosesan teks di bawah GNU/Linux. Bergabunglah dengan perintah menggabungkan dua file berdasarkan baris konten yang cocok yang ditemukan di setiap file. Menggunakan perintah gabungan cukup lurus ke depan dan jika digunakan saat ini dan dalam situasi yang tepat dapat menghemat banyak waktu dan usaha. Artikel ini membutuhkan pengalaman baris perintah yang sangat mendasar.

Opsi yang sering digunakan

  • -1 bidang
    Bergabunglah di bidang yang ditentukan ditemukan di file 1
  • -2 bidang
    Bergabunglah di bidang yang ditentukan ditemukan di file 2
  • -t char
    Gunakan char sebagai pemisah input dan output

Dasar -dasar

Penggunaan Dasar Perintah Join adalah penggunaan tanpa opsi. Semua yang diperlukan adalah menentukan 2 file sebagai argumen. Katakanlah kita memiliki dua file a.txt dan b.txt dengan konten berikut:

$ kucing a.txt 1 A 2 B 3 C $ kucing b.txt 1 John 2 Linda 3 Rares 

Di sini kita dapat melihat bahwa bidang pertama adalah kandidat yang sempurna untuk melakukan operasi gabungan. Secara default perintah gabungan akan melakukan operasi gabungan di bidang pertama di mana pemisah bidang adalah karakter atau tab ruang tunggal. Oleh karena itu, dengan mengeksekusi perintah Linux berikut, dua file kami bergabung berdasarkan bidang 1:

$ bergabunglah a.txt b.txt 1 A John 2 B Linda 3 C Rares 

Memilih bidang

Dalam contoh kami sebelumnya, Anda dapat melihat fungsi default dari perintah gabungan. Di bagian ini kita akan melihat bagaimana kita dapat menentukan bidang yang berbeda di mana perintah gabungan harus melakukan operasi gabungan. Mari kita pertimbangkan a berikut.txt dan b.File txt:

$ kucing a.txt John A 1 Linda B 2 Rares C 3 $ kucing b.txt 1 A 2 B 3 C 

Seperti yang bisa kita lihat, dalam hal ini kami adalah bidang gabungan default pertama tidak lagi cocok. Oleh karena itu, mengeksekusi perintah gabungan pada dua file ini tidak akan menghasilkan output apa pun. Namun, kita juga dapat melihat bahwa bidang kedua dalam file pertama cocok dengan bidang kedua di file kedua. Sebagai hasilnya, kami dapat memodifikasi perilaku default dari perintah gabung dan bergabung dengan kedua file berdasarkan bidang kedua di setiap file:

$ gabung -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 

di mana -1 adalah file pertama dan 2 adalah bidang kedua dan -2 adalah file kedua dan 2 adalah kolom kedua. Dalam hal ini hanya karena kedua bidang yang cocok adalah yang kedua kita dapat menggunakan -J sebagai jalan pintas.

$ gabung -j 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 

Seperti yang telah Anda perhatikan bidang ketiga dan bidang pertama di kedua file juga dapat digunakan untuk operasi bergabung.

$ gabung -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 $ gabung -1 3 -2 1 a.txt b.txt 1 John a a 2 linda b b 3 rares c c 

Penting untuk dicatat dari yang terakhir ke contoh -contoh bahwa perintah bergabung akan selalu mencetak bidang pencocokan sebagai yang pertama.

Memilih Pembatas Bidang

Baik tidak semua file diformat dengan baik untuk operasi perintah gabungan. Seperti yang disebutkan sebelumnya, pembatas bidang default adalah ruang. Tetapi bagaimana jika kita memiliki "," (koma) atau bahkan tab sebagai pembatas? Mari kita pertimbangkan file berikut:

$ kucing a.txt John, a, 1 linda, b, 2 rares, c, 3 $ kucing b.txt 1, a 2, b 3, c 

Dalam hal ini satu -satunya perbedaan dari contoh sebelumnya adalah bahwa pemisah lapangan adalah ",". Untuk memberi tahu perintah gabungan pemisah lapangan mana yang akan digunakan kita dapat memanfaatkan opsi -t opsi yang lain sintaksnya sama:

$ gabung -t, -1 3 -2 1 a.txt b.txt 1, John, a, a 2, linda, b, b 3, rares, c, c 

Beberapa ruang

Jika file Anda memiliki beberapa spasi sebagai pembatas lapangan, opsi teraman adalah mengonversinya menjadi pembatas ruang tunggal. Misalnya bergabung dengan file -file ini mungkin cukup sulit:

$ kucing a.txt John A 1 Linda B 2 Rares C 3 $ kucing b.txt 1 A 2 B 3 C 

Oleh karena itu, jika situasi memungkinkan Anda, Anda dapat mengonversinya menjadi satu file ruang yang dibatasi menggunakan perintah SED:

$ sed -i 's/\ s \+//g' a.txt $ sed -i 's/\ s \+//g' b.txt $ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C 

Tab Pembatas Bidang

Pembatas tab juga diterima oleh perintah gabungan sebagai default. Oleh karena itu, contoh berikut akan melakukan operasi gabungan yang valid:

$ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ gabung -1 3 -2 1 a.txt b.txt 1 John a a 2 linda b b 3 rares c c 

Mengabaikan kasus

Jika bidang pencocokan Anda dalam urutan yang sempurna tetapi bidang dari kedua file memiliki perbedaan huruf besar dan kecil, gabungan tidak akan melakukan operasi gabungan yang valid dan mengabaikan garis yang tidak tertandingi kecuali -i (abaikan case) digunakan. Catatan Berkilai B berikut dalam contoh berikut:

$ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ gabung -1 2 -2 2 a.txt b.txt A John 1 1 C Rares 3 3 $ gabung -i -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 

Format gabungan default utama

Dalam contoh berikut kita akan melihat bagaimana kita dapat mengesampingkan perilaku format perintah gabungan default dengan opsi -o. Pertimbangkan output bergabung dari file a.txt dan b.txt:

$ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ gabung -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 

Bidang bergabung dicetak sebagai yang pertama. Bagaimana jika kita tidak ingin mencetak bidang gabungan sama sekali atau bagaimana jika kita ingin mencetak bidang yang digabungkan dalam urutan yang berbeda. Dalam hal ini opsi format -o menjadi sangat berguna. Dalam contoh ini kita hanya akan mencetak bidang yang cocok:

  • Bidang pertama dalam file pertama: 1.1
  • Bidang pertama dalam file kedua: 2.1
$ gabung -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 

Garis yang tidak bisa dipasangkan

Secara default hanya garis berpasangan yang dicetak oleh gabungan perintah. -Opsi menginstruksikan perintah gabungan untuk juga menyertakan baris yang tidak tertandingi. Dalam contoh berikutnya kita akan mencetak semua baris yang tidak tertandingi dalam file 1.

$ kucing a.txt b.txt JOHN A 1 LINDA B 2 RARES C 3 LUBOS D 4 1 A 2 B 3 C 5 E $ gabung -a 1 -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 Lubos 

Atau kami Cat mencetak semua baris yang tidak dapat dipasangkan dari kedua file oleh:

$ gabung -a 1 -a 2 -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 Lubos 5 

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Menguasai loop skrip bash
  • Loop bersarang dalam skrip bash
  • Menangani input pengguna dalam skrip bash
  • Perintah Linux Dasar
  • Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Cara memasang gambar iso di linux