Jika Anda adalah pengguna baris perintah Linux, dan pekerjaan Anda melibatkan bermain dengan file teks, Anda harus tahu (jika belum) bahwa ada banyak utilitas baris perintah yang mungkin sangat membantu Anda dalam situasi yang berbeda. Misalnya, ada alat yang dijuluki 'uniq' yang melaporkan atau bahkan menghapus baris berulang dalam file.
Pada artikel ini, kita akan membahas 'uniq' melalui contoh yang mudah dipahami. Namun sebelum kita melakukannya, perlu disebutkan bahwa semua contoh dan instruksi yang disebutkan dalam tutorial ini telah diuji di Ubuntu 16.04LTS.
Perintah Linux Uniq
Seperti yang telah disebutkan di awal, perintah uniq melaporkan atau menghilangkan baris yang berulang. Berikut sintaks umum dari perintah ini:
uniq [OPSI]... [INPUT [OUTPUT]]
Menurut halaman manual utilitas:"Filter garis pencocokan yang berdekatan dari INPUT (atau input standar), menulis ke OUTPUT (atau output standar). Tanpa opsi, garis yang cocok digabungkan ke kemunculan pertama."
Berikut adalah beberapa contoh yang akan membantu Anda memahami alat ini dengan lebih baik.
1. Cara menghapus baris berulang menggunakan perintah uniq
Misalkan file berisi baris berikut:
Jelas, setiap baris diulang. Sekarang mari kita jalankan Uniq pada file ini, dan lihat apa yang terjadi.
uniq file1
Jadi seperti yang Anda lihat, output perintah yang dihasilkan tidak berisi baris yang berulang. Harap dicatat bahwa file asli - 'file1' dalam kasus kami - tetap tidak terpengaruh. Anda dapat mengarahkan output alat ke file lain jika Anda ingin menyimpan dan mengerjakannya.
2. Cara menampilkan jumlah pengulangan untuk setiap baris
Jika mau, Anda juga dapat membuat tampilan uniq dalam output berapa kali garis diulang. Ini dapat dilakukan dengan menggunakan -c opsi baris perintah. Misalnya, perintah berikut:
uniq -c file1
menghasilkan output berikut:
Jadi seperti yang Anda lihat, jumlah pengulangan untuk setiap baris diberi awalan sebelum di output.
3. Bagaimana hanya mencetak baris duplikat menggunakan uniq
Untuk membuat uniq print hanya duplikat baris, gunakan -D opsi baris perintah. Misalnya, file1 sekarang berisi baris tambahan di bagian bawah (perhatikan bahwa baris ini tidak diulang).
Sekarang, ketika saya menjalankan perintah berikut:
uniq -D file1
Output berikut dihasilkan:
Seperti yang Anda lihat, opsi -D membuat uniq menampilkan semua baris yang berulang dalam output, termasuk semua pengulangannya. Untuk memisahkan lebih baik, Anda dapat memiliki baris kosong setelah setiap grup baris berulang, sesuatu yang dapat dilakukan dengan menggunakan --all-repeated pilihan.
uniq --all-repeated[=METHOD] file1
Opsi ini memerlukan nama metode yang akan dimasukkan oleh pengguna. Nilainya bisa prepend (untuk menambahkan baris kosong) atau memisahkan (untuk menambahkan baris kosong). Misalnya, inilah opsi yang beraksi dengan prepend metode.
Selanjutnya, jika Anda ingin alat hanya menampilkan satu baris duplikat per grup, Anda dapat menggunakan -d pilihan. Ini contohnya:
Jelas, hanya satu baris berulang dari setiap grup yang ditampilkan di output.
4. Cara membuat uniq menghindari membandingkan beberapa bidang pertama
Terkadang, tergantung pada situasinya, kesamaan dua garis ditentukan oleh sebagian kecil dari garis tersebut. Misalnya, perhatikan konten file berikut:
Sekarang, misalkan garis dianggap serupa atau berbeda berdasarkan bidang keduanya (HTF atau FF), dan Anda ingin menyampaikan ini ke uniq, maka ini dapat dilakukan dengan menggunakan -f opsi baris perintah.
uniq -f [number-of-fields-to-skip] [file-name]
Opsi -f mengharuskan Anda untuk memberikan angka yang mewakili jumlah kolom yang ingin Anda lewati oleh perintah. Misalnya, dalam kasus kami, kami dapat meneruskan '1' sebagai argumen ke -f karena hanya bidang pertama yang ingin kami lewati oleh uniq.
uniq -f 1 file1
Outputnya dengan jelas menunjukkan bahwa uniq menganggap baris pertama dan ketiga sebagai pengulangan berdasarkan bidang kedua masing-masing.
5. Cara membuat uniq menampilkan semua baris, sambil memisahkan grup berulang dengan baris kosong
Jika persyaratannya adalah untuk menampilkan semua garis, sambil memisahkan kelompok garis yang berulang dengan garis kosong, maka Anda dapat menggunakan --group pilihan. Seperti --semua-berulang opsi yang kita bahas sebelumnya, --group juga mengharuskan Anda untuk memberi tahu posisi baris kosong (tambahkan , tambahkan , atau keduanya ).
Ini contohnya:
Perhatikan bahwa opsi -f telah kita bahas di bagian sebelumnya.
6. Cara membuat uniq hanya mencetak garis yang tidak berulang
Seperti yang sudah Anda pahami sekarang, secara default perintah uniq hanya menampilkan baris berulang dalam output. Tetapi jika Anda mau, Anda dapat membuatnya hanya menampilkan garis yang tidak berulang atau unik. Ini dapat dilakukan dengan menggunakan -u opsi baris perintah.
uniq -u [file-name]
Jadi, dalam kasus kami:
uniq -u file1
Ini contohnya:
Perhatikan bahwa opsi -f telah kita bahas di bagian/poin nomor 4.
7. Cara membuat uniq menghindari membandingkan jumlah karakter awal yang ditetapkan
Dalam salah satu contoh kami sebelumnya, kami membahas bagaimana Anda dapat membuat uniq melewati bidang. Namun, jika mau, Anda juga dapat memaksa alat untuk melewati sejumlah karakter awal yang ditetapkan. Fitur ini dapat diakses menggunakan -s opsi baris perintah.
uniq -s [number-of-char] nama file
Misalnya, file berisi baris berikut:
Sekarang, jika Anda ingin uniq melewati 4 karakter pertama di setiap baris sebelum membandingkan, maka ini dapat dilakukan dengan cara berikut:
uniq -s 4 file1
Berikut tindakan perintah di atas:
Jadi Anda dapat melihat bahwa baris keempat (faq_forge) yang semula ada telah dilewati di output. Ini karena setelah melewatkan empat karakter pertama, baris ketiga dan keempat sama, dan karenanya dianggap diulang oleh uniq.
8. Bagaimana membatasi perbandingan untuk mengatur jumlah karakter
Mirip dengan cara Anda melewatkan karakter, Anda juga dapat meminta uniq untuk membatasi perbandingan ke sejumlah karakter yang ditentukan. Untuk ini, Anda harus menggunakan -w opsi baris perintah.
uniq -w [jumlah karakter] [nama file]
Misalnya, file berisi baris berikut:
Sekarang, jika persyaratannya adalah membatasi perbandingan ke 3 karakter pertama, maka ini dapat dilakukan dengan cara berikut:
uniq -w 3 file1
Berikut adalah tindakan perintah di atas:
Karena 3 karakter pertama dari baris ketiga dan keempat adalah sama, maka baris ini dianggap berulang. Oleh karena itu, hanya yang ketiga yang ditampilkan di output.
9. Bagaimana membuat perbandingan uniq case menjadi tidak sensitif
Secara default, perbandingan yang dilakukan uniq bersifat case-sensitive. Namun, Anda dapat membuat proses peka huruf besar/kecil menggunakan -i opsi baris perintah.
Misalnya, perhatikan kasus yang sama yang kita bahas di bagian sebelumnya, hanya saja baris keempat dimulai dengan huruf kapital H, O, dan W.
Sekarang, jika Anda mencoba menjalankan perintah yang sama yang kita gunakan di bagian sebelumnya, Anda akan melihat bahwa outputnya berbeda:
Itu karena tiga karakter pertama dari baris ketiga dan keempat berbeda untuk uniq karena kasusnya. Dalam situasi baris ini, Anda dapat membuat perbandingan tidak peka huruf besar/kecil menggunakan opsi baris perintah -i.
10. Cara membuat keluaran uniq dihentikan NUL
Secara default, output yang dihasilkan uniq adalah baris baru dihentikan. Namun, jika Anda mau, Anda dapat memiliki output yang dihentikan NUL sebagai gantinya (berguna saat berurusan dengan skrip uniq). Ini dapat dimungkinkan dengan menggunakan -z opsi baris perintah.
uniq -z [nama file]
Kesimpulan
Kami telah membahas hampir semua opsi baris perintah yang ditawarkan oleh perintah uniq, jadi praktikkan saja apa pun yang telah kami diskusikan di sini, dan Anda akan mendapatkan ide yang solid tentang cara kerja uniq, dan fitur apa yang disediakannya. Seperti biasa, jika ada pertanyaan atau keraguan, buka halaman manual perintah terlebih dahulu.