Pengenalan
- 3970
- 921
- Clarence Tromp
Sertai Perintah adalah satu lagi contoh utiliti pemprosesan teks di bawah GNU/Linux. Sertai Perintah Menggabungkan Dua Fail Berdasarkan garis kandungan yang sepadan yang terdapat dalam setiap fail. Menggunakan Perintah Join agak lurus ke hadapan dan jika digunakan pada masa ini dan dalam keadaan yang betul, ia dapat menjimatkan banyak masa dan usaha. Artikel ini memerlukan pengalaman baris perintah yang sangat asas.
Pilihan yang sering digunakan
- -1 medan
Sertailah di medan yang ditentukan yang terdapat dalam Fail 1 - -2 medan
Sertailah di medan yang ditentukan yang terdapat dalam Fail 2 - -t char
Gunakan char sebagai pemisah input dan output
Asas
Penggunaan asas komando gabungan adalah penggunaan tanpa sebarang pilihan. Semua yang diperlukan adalah untuk menentukan 2 fail sebagai hujah. Katakan kita mempunyai dua fail a.txt dan b.TXT dengan kandungan berikut:
$ kucing a.txt 1 a 2 b 3 c $ kucing b.txt 1 John 2 Linda 3 Rares
Di sini kita dapat melihat bahawa medan pertama adalah calon yang sempurna untuk melakukan operasi gabungan. Secara lalai komando gabungan akan melaksanakan operasi gabungan di medan pertama di mana pemisah medan adalah watak atau tab ruang tunggal. Oleh itu, dengan melaksanakan arahan Linux berikut, kedua -dua fail kami disambungkan berdasarkan bidang 1:
$ Sertai a.txt b.txt 1 a John 2 b linda 3 c rares
Memilih bidang
Dalam contoh sebelumnya, anda dapat melihat fungsi lalai perintah gabungan. Dalam seksyen ini kita akan melihat bagaimana kita dapat menentukan bidang yang berbeza di mana perintah bergabung harus melaksanakan operasi bergabung. Mari kita pertimbangkan berikut a.txt dan b.fail txt:
$ kucing a.txt John A 1 Linda B 2 Rares C 3 $ kucing b.txt 1 a 2 b 3 c
Seperti yang dapat kita lihat, dalam kes ini, kita medan gabungan lalai pertama tidak lagi sepadan. Oleh itu, melaksanakan perintah gabungan pada kedua -dua fail ini tidak akan menghasilkan output. Walau bagaimanapun, kita juga dapat melihat bahawa medan kedua dalam fail pertama sepadan dengan medan kedua dalam fail kedua. Akibatnya, kami dapat mengubah suai tingkah laku lalai komando menyertai dan menyertai kedua -dua fail berdasarkan medan kedua dalam setiap fail:
$ gabungan -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3
di mana -1 adalah fail pertama dan 2 adalah medan kedua dan -2 adalah fail kedua dan 2 adalah lajur kedua. Dalam kes ini hanya kerana kedua -dua medan yang sepadan adalah kedua kita boleh menggunakan -J sebagai jalan pintas.
$ gabungan -j 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3
Seperti yang anda perhatikan medan ketiga dan medan pertama dalam kedua -dua fail juga boleh digunakan untuk operasi gabungan.
$ gabungan -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3 $ Sertai -1 3 -2 1 a.txt b.txt 1 John A A 2 Linda B B 3 Rares C C
Penting untuk diperhatikan dari yang terakhir hingga contoh yang bergabung dengan perintah akan selalu mencetak medan yang sepadan sebagai yang pertama.
Memilih pematuhan lapangan
Tidak semua fail diformat dengan baik untuk operasi arahan gabungan. Seperti yang dinyatakan sebelum ini, pembatas medan lalai adalah ruang. Tetapi bagaimana jika kita mempunyai "," (koma) atau bahkan tab sebagai pembatas? Mari kita pertimbangkan fail berikut:
$ kucing a.txt John, A, 1 Linda, B, 2 Rares, C, 3 $ kucing b.txt 1, A 2, B 3, C
Dalam kes ini, satu -satunya perbezaan dari contoh sebelumnya ialah pemisah medan adalah ",". Untuk memberitahu komando Join Command pemisah medan mana yang boleh kita dapat mengambil kesempatan dari pilihan -t Othewise sintaks adalah sama:
$ gabungan -t, -1 3 -2 1 a.txt b.txt 1, John, A, A 2, Linda, B, B 3, Rares, C, C
Pelbagai ruang
Sekiranya fail anda mempunyai pelbagai ruang sebagai pematuhan medan pilihan yang paling selamat adalah untuk menukarnya ke satu pembatas ruang tunggal. Contohnya menyertai fail ini mungkin agak sukar:
$ kucing a.txt John A 1 Linda B 2 Rares C 3 $ kucing b.txt 1 a 2 b 3 c
Oleh itu, jika keadaan membolehkan anda, anda boleh menukarnya ke satu fail yang dibatasi ruang 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 Pemisahan Lapangan
Tab Delimiter juga diterima oleh Perintah Join sebagai lalai. Oleh itu, contoh berikut akan melakukan operasi gabungan yang sah:
$ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ Sertai -1 3 -2 1 a.txt b.txt 1 John A A 2 Linda B B 3 Rares C C
Mengabaikan kes
Sekiranya medan yang sepadan anda dalam urutan yang sempurna tetapi medan dari kedua -dua fail mempunyai perbezaan kes atas dan bawah, gabungan tidak akan melakukan operasi gabungan yang sah dan mengabaikan baris yang tidak dapat ditandingi kecuali -i (abaikan kes) digunakan. Perhatikan kes berikut yang lebih rendah dalam contoh berikut:
$ kucing a.txt b.txt John A 1 Linda B 2 Rares C 3 1 A 2 B 3 C $ gabungan -1 2 -2 2 a.txt b.txt A John 1 1 C Rares 3 3 3 $ gabungan -i -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3
Format gabungan lalai yang melampaui lalai
Dalam contoh berikut, kita akan melihat bagaimana kita dapat mengatasi tingkah laku format perintah gabungan lalai dengan pilihan -o pilihan. Pertimbangkan output gabungan fail 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 $ gabungan -1 2 -2 2 a.txt b.txt A John 1 1 B Linda 2 2 C Rares 3 3
Bidang menyertai dicetak sebagai yang pertama. Bagaimana jika kita tidak mahu mencetak medan menyertai sama sekali atau bagaimana jika kita mahu mencetak medan yang disatukan dalam urutan yang berbeza. Dalam kes ini, pilihan format -O menjadi sangat berguna. Dalam contoh ini kita akan mencetak hanya medan yang sepadan:
- medan pertama dalam fail pertama: 1.1
- medan pertama dalam fail kedua: 2.1
$ Sertai -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3
Garis tidak boleh dipulihkan
Secara lalai baris yang boleh dipasangkan hanya dicetak oleh perintah gabungan. -Pilihan mengarahkan Perintah Join untuk juga termasuk baris yang tidak dapat ditandingi. Dalam contoh seterusnya, kami akan mencetak semua baris yang tidak dapat ditandingi dalam Fail 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 $ gabungan -a 1 -o 1.1 2.1 -1 2 -2 2 a.txt b.txt John 1 Linda 2 Rares 3 Lubos
Atau kami mencetak semua baris yang tidak boleh dipamerkan dari kedua-dua fail dengan:
$ gabungan -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 Berkaitan:
- Perkara yang hendak dipasang di Ubuntu 20.04
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Menguasai Gelung Skrip Bash
- Gelung bersarang dalam skrip bash
- Mengendalikan input pengguna dalam skrip bash
- Perintah Linux Asas
- Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- Cara Gunung ISO di Linux