Pendahuluan
comm command adalah utilitas Linux sederhana untuk membandingkan file dengan fokus pada konten umum. Perintah tersebut membandingkan dua file yang diurutkan baris demi baris dan menampilkan hasilnya dalam tiga kolom.
Panduan berikut akan menjelaskan cara menggunakan comm Linux perintah dengan contoh.
Prasyarat
- Sistem yang menjalankan Linux.
- Akses ke terminal.
comm Sintaks Perintah
comm perintah dijalankan dengan setidaknya dua argumen yang menyatakan nama file yang akan dibandingkan. Menambahkan opsi sebelum nama file menyesuaikan output.
Dasar comm sintaksnya adalah:
comm [file_name_1] [file_name_2]
comm [options] [file_name_1] [file_name_2]
Namun, menjalankan comm tanpa opsi apa pun tidak memberikan hasil dan mencetak output berikut:
Opsi Perintah com
Menggunakan comm sederhana, tetapi menambahkan opsi memberikan penyesuaian tambahan.
Tabel di bawah mencakup semua comm pilihan:
| Perintah | Deskripsi |
|---|---|
-1 | Mencetak output tanpa kolom pertama, menyembunyikan baris unik untuk file pertama. |
-2 | Menyembunyikan kolom kedua di output (baris unik untuk file kedua). |
-3 | Tidak mencetak kolom yang berisi baris umum. |
--check-order | Memeriksa apakah file diurutkan. |
--nocheck-order | Mencetak hasil tanpa memeriksa apakah file diurutkan. |
--output-delimiter=[any character] | Mengganti spasi default dalam output dengan karakter lain. |
--total | Menampilkan jumlah baris dalam setiap kolom. |
-z | Menampilkan baris output sebagai NULL-dihentikan alih-alih output default yang diakhiri baris baru. |
--help | Menampilkan informasi bantuan. |
--version | Menampilkan informasi versi. |
Contoh Linux comm
comm perintah bekerja dengan dua file yang diurutkan. Untuk memahami bagaimana comm berfungsi, siapkan lingkungan pengujian:
- Buat dua file pengujian.
- Beri nama file (misalnya, File_1 dan File_2).
- Tambahkan kata atau angka yang berbeda ke setiap file.
- Pastikan beberapa konten tumpang tindih.
Catatan: Linux menawarkan banyak cara untuk membuat file dari terminal. Cara termudah adalah dengan menggunakan perintah sentuh.
Gunakan perintah cat untuk menampilkan File_1 dan File_2 isi. Outputnya menunjukkan bahwa file tumpang tindih dalam tiga kata (art , anjing , dan jalan ):
Bagian berikut menggunakan File_1 dan File_2 untuk menjelaskan bagaimana comm bekerja.
Bandingkan Dua File
Bandingkan dua file yang diurutkan baris demi baris dengan:
comm File_1 File_2
Perintah mencetak hasil dalam tiga kolom:
- Kolom 1 hanya menampilkan nilai unik untuk file pertama.

- Kolom 2 mencetak item yang hanya ada di file kedua.

- Kolom 3 menampilkan konten umum untuk kedua file:seni , anjing , dan jalan .
Sembunyikan Kolom
Gunakan argumen -1 , -2 , dan -3 dan kombinasi untuk hanya menampilkan kolom tertentu. Misalnya, cetak hanya baris yang umum untuk kedua file dengan:
comm -12 File_1 File_2
Menggunakan -12 dengan comm menyembunyikan kolom pertama dan kedua, hanya menyisakan satu baris yang berisi baris yang dibagikan oleh kedua file.
Sebaliknya, -3 menyembunyikan kolom tiga dan menampilkan baris unik untuk setiap file:
comm -3 File_1 File_2
Abaikan Kasus
Perbandingan dengan comm peka huruf besar/kecil. Semua kata di File_1 dan File_2 huruf kecil, jadi comm mengenali seni , anjing , dan jalan seperti biasa untuk kedua file.
Namun, jika, misalnya, kata seni huruf besar di File_1 tapi huruf kecil di File_2, outputnya adalah:
Perbedaan huruf besar dengan kata seni /Seni antara dua file prompt comm untuk mendaftarkan kata sebagai unik untuk setiap file. Sementara comm tidak menerima -i sebagai opsi untuk mengabaikan huruf besar/kecil, opsi tr memberikan solusi.
Gunakan Tr pada dua file untuk mengonversi huruf besar dan kemudian mengarahkan output ke file sementara (Temp_1 , Temp_2 ):
tr A-Z a-z <File_1 > Temp_1 tr A-Z a-z <File_2 > Temp_2
Tr mengonversi konten di kedua file menjadi huruf kecil dan membuat file baru untuk menyimpan output (Temp_1 , Temp_2 ). File asli tetap tidak berubah.
Jalankan comm pada Temp_1 dan Temp_2 untuk membandingkan file saat "mengabaikan" huruf besar:
comm Temp_1 Temp_2
Perintah mengeluarkan huruf kecil art sebagai kata umum untuk kedua file.
Bandingkan File yang Tidak Disortir
comm perintah hanya menghasilkan output yang berharga ketika file yang diurutkan digunakan sebagai argumen. Saat comm bekerja dengan file yang tidak disortir, output tidak dapat digunakan dan selalu mencetak pesan kesalahan.
Misalnya, dua file berikut tidak diurutkan, seperti yang ditunjukkan dengan cat :
Saat Anda menggunakan comm pada file yang tidak disortir, output akan dicetak:
Sementara comm memasangkan jalur tertentu dan menghasilkan keluaran, keluarannya tidak lengkap dan tidak dapat digunakan. Pesan kesalahan menentukan bahwa tidak ada file yang diurutkan.
Untuk memverifikasi bahwa file tidak diurutkan, gunakan comm --check-order :
comm --check-order Not_Sorted_File_1 Not_Sorted_File_2
--check-order opsi mencetak pesan kesalahan dan menghentikan comm dari membandingkan file pada item pertama yang tidak disortir.
Untuk memaksa comm untuk mencetak keluaran dan menyembunyikan pesan kesalahan, gunakan --nocheck-order :
comm --nocheck-order Not_Sorted_File_1 Not_Sorted_File_2
Outputnya tidak dapat diandalkan. Misalnya, kata seni ada di kolom satu dan dua, meskipun itu umum untuk kedua file.
Cara jitu untuk menggunakan comm dengan file yang tidak disortir adalah menerapkan sort. Jalankan perintah berikut:
comm <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)
Keluaran menunjukkan bahwa kata-kata seni , anjing , dan jalan umum untuk kedua file.
Perhatikan bahwa sort tanpa argumen hanya mempengaruhi output standar dan tidak mengubah file sumber. Namun, sort dapat digunakan dengan comm other lainnya pilihan.
Misalnya, untuk mencetak hanya kata-kata umum untuk kedua file yang tidak disortir, gunakan:
comm -12 <(sort Not_Sorted_File_1 ) <(sort Not_Sorted_File_2)
Untuk mengurutkan file sumber lalu jalankan comm , gunakan sort -o . -o argumen menyimpan output yang diurutkan ke file tertentu.
Misalnya, urutkan Not_Sorted_File_1 dan simpan hasilnya ke file yang sama dengan:
sort -o Not_Sorted_File_1 Not_Sorted_File_1
Menjalankan cat setelah menyortir file menunjukkan bahwa file diurutkan sekarang. Ulangi proses yang sama untuk file kedua:
sort -o Not_Sorted_File_2 Not_Sorted_File_2
Jalankan comm untuk membandingkan file:
comm Not_Sorted_File_1 Not_Sorted_File_2
Bandingkan Direktori
Gunakan comm dengan ls untuk membandingkan nama file dalam dua direktori. Misalnya, bandingkan Directory1 dan Direktori2 :
comm <(ls Directory1) <(ls Directory2)
Kolom pertama mewakili nama file yang unik untuk Directory1 , yang kedua yang unik untuk Sutradara y2 , dan yang ketiga mewakili nama file yang umum untuk kedua folder.
Saat menjalankan comm dengan ls , perintah hanya melihat nama file, bukan konten. File yang terdaftar sebagai umum untuk kedua folder masih bisa berbeda meskipun memiliki nama yang sama.
Gunakan komunikasi dengan STDIN
Untuk membandingkan file dengan input terminal standar, gunakan tanda hubung sebagai salah satu argumen dengan comm .
Misalnya, bandingkan File_1 dengan input standar menggunakan:
comm File_1 -
Tulis teks untuk membandingkan File_1 langsung ke terminal atau gunakan editor teks.
Setelah menekan Enter , perintah mencetak output dalam tiga kolom, menggunakan STDIN sebagai ganti File_2.
Kolom pertama mewakili konten unik untuk File_1 , yang kedua menunjukkan kata-kata yang hanya ditemukan di input standar, dan kata ketiga yang umum untuk keduanya.
Ubah Pemisah Default
comm output memisahkan kolom dengan spasi secara default. Untuk mengubah pemisah, gunakan --output-delimiter pilihan.
Misalnya, untuk menggunakan * alih-alih spasi, jalankan:
comm --output-delimiter=* File_1 File_2
Keluaran menunjukkan bahwa kata-kata di File_1 tidak memiliki tanda bintang, yang ada di File_2 memiliki satu tanda bintang, dan item yang umum untuk kedua file memiliki dua tanda bintang.
Tampilkan Jumlah Baris
Tampilkan jumlah total baris di setiap kolom dengan --total pilihan:
comm --total File_1 File_2
Output mencetak jumlah baris di bagian bawah setiap kolom.
Kesimpulan
Setelah mengikuti langkah-langkah dari tutorial ini, Anda tahu bagaimana membandingkan file baris demi baris dengan comm memerintah.
Selanjutnya, pelajari cara lain untuk membandingkan file dengan perintah diff.