Terkadang, Anda mungkin ingin menggabungkan dua file dengan cara yang outputnya lebih masuk akal. Misalnya, mungkin ada file yang berisi nama benua, dan file lain yang berisi nama negara yang terletak di benua ini, dan persyaratannya adalah menggabungkan kedua file sedemikian rupa sehingga benua dan negara terkait muncul di baris yang sama.
Itu hanya satu contoh - mungkin ada ratusan kasus penggunaan seperti itu. Jika Anda menggunakan Linux dan mencari alat yang dapat membantu Anda dalam situasi seperti ini, Anda mungkin ingin memeriksa bergabung , yang merupakan utilitas baris perintah. Dalam tutorial ini, kita akan membahas perintah ini menggunakan beberapa contoh yang mudah dipahami.
Harap dicatat bahwa semua contoh yang disebutkan dalam artikel ini telah diuji di Ubuntu 16.04, dan versi perintah join yang kami gunakan adalah 8.25.
perintah bergabung dengan Linux
Perintah join memungkinkan Anda menggabungkan baris dari dua file pada bidang yang sama.
join [OPTION]... FILE1 FILE2
Inilah yang dikatakan halaman manual tentang alat ini:
For each pair of input lines with identical join fields, write a line to standard output. The default
join field is the first, delimited by blanks. When FILE1 or FILE2 (not both) is -, read standard input.
Contoh berikut akan memberi Anda ide bagus tentang cara kerja perintah join.
1. Bagaimana cara menggabungkan baris file menggunakan perintah join?
Mari kita pahami penggunaan dasar perintah join. Misalkan ada dua file (file1 dan file2) yang berisi baris berikut:
1. Asia:
2. Africa:
3. Europe:
4. North America:
dan
1. India
2. Nigeria
3. The Netherlands
4. The US
Sekarang, Anda dapat menggabungkan kedua file ini dengan cara berikut:
join file1 file2
Berikut adalah output dari perintah di atas dalam kasus kami:
2. Bagaimana cara membuat join print unpairable lines?
Secara default, perintah join hanya mencetak baris yang dapat dipasangkan. Misalnya, meskipun file1 berisi bidang tambahan (nomor baris 5):
1. Asia:
2. Africa:
3. Europe:
4. North America:
5. South America:
menggabungkan file1 dan file2 tidak akan menghasilkan keluaran yang berbeda:
Itu karena garis yang tidak dapat dipasangkan ditinggalkan di output. Namun, jika mau, Anda masih dapat menampilkannya di output menggunakan -a opsi baris perintah. Opsi ini mengharuskan Anda untuk memberikan nomor file sehingga alat mengetahui file mana yang sedang Anda bicarakan.
Misalnya, dalam kasus kami, perintahnya adalah:
join file1 file2 -a 1
Jadi Anda dapat melihat bahwa baris tidak berpasangan dari file nomor 1 (file1 dalam kasus kami) juga ditampilkan di output.
Perhatikan bahwa jika Anda hanya ingin mencetak garis yang tidak berpasangan (artinya, menekan garis berpasangan dalam output), Anda dapat melakukannya menggunakan -v opsi baris perintah. Opsi ini bekerja persis seperti -a bekerja.
Berikut ini contoh opsi -v:
3. Bagaimana cara menyediakan bidang gabungan khusus?
Seperti yang sudah kita ketahui, join menggabungkan baris file pada bidang umum, yang merupakan bidang pertama secara default. Namun, jika mau, Anda dapat menentukan bidang yang berbeda untuk setiap file. Misalnya, perhatikan konten berikut di file1 dan file2, masing-masing.
* 1. Asia:
& 2. Africa:
@ 3. Europe:
# 4. North America:
# 1. India
@ 2. Nigeria
& 3. The Netherlands
* 4. The US
Sekarang, jika Anda ingin bidang kedua dari setiap baris menjadi bidang umum untuk digabungkan, Anda dapat memberi tahu alat ini dengan menggunakan -1 dan -2 opsi baris perintah. Sementara yang pertama mewakili file pertama, yang terakhir mengacu pada file kedua. Opsi ini memerlukan argumen numerik yang merujuk ke bidang gabungan untuk file terkait.
Misalnya, dalam kasus kami, perintahnya adalah:
join -1 2 -2 2 file1 file2
Dan inilah output dari perintah ini:
Perhatikan bahwa jika posisi bidang umum sama di kedua file (seperti dalam contoh yang baru saja kita bahas, di mana itu 2), Anda dapat mengganti bagian - 1 [bidang] -2 [bidang] dalam perintah dengan -j [bidang] . Jadi dalam kasus kami, perintahnya akan menjadi:
gabung -j2 file1 file2
4. Bagaimana cara membuat operasi gabungan tidak peka huruf besar/kecil?
Secara default, operasi perintah join peka huruf besar/kecil. Misalnya, perhatikan file berikut:
file1
A. Asia:
B. Africa:
C. Europe:
D. North America:
file2
a. India
b. Nigeria
c. The Netherlands
d. The US
Sekarang, jika Anda mencoba menggabungkan kedua file ini, menggunakan bidang umum default (pertama), tidak akan terjadi apa-apa. Itu karena kasus elemen bidang di kedua file berbeda. Untuk membuat gabung mengabaikan masalah kasus ini, gunakan -i opsi baris perintah.
Berikut perintah untuk kasus kami:
join -i file1 file2
Dan tangkapan layar berikut menunjukkan perintah beraksi:
5. Bagaimana cara membuat gabung tidak memeriksa input yang diurutkan?
Secara default, perintah join memeriksa apakah input yang diberikan diurutkan atau tidak, dan melaporkan jika tidak. Sebagai contoh, perhatikan output berikut ketika informasi dalam file1 tidak diurutkan:
Sekarang, jika Anda ingin kesalahan/peringatan ini hilang, Anda dapat melakukannya menggunakan --nocheck-order pilihan. Ini perintah yang sama, tetapi dengan opsi ini diaktifkan:
Jadi Anda dapat melihat bahwa perintah join tidak memeriksa input yang diurutkan kali ini.
Kesimpulan
Bergabung mungkin bukan alat yang sangat mudah untuk dipahami, tetapi begitu Anda terbiasa, itu bisa bertindak sebagai penghemat waktu yang sangat besar bagi Anda dalam beberapa situasi. Kami telah membahas sebagian besar opsi baris perintah di sini. Coba ini, dan setelah selesai, buka halaman manual perintah untuk sisanya.