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.