GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan perintah uniq untuk memproses daftar di Linux

Kami telah melihat perintah sortir di artikel kami sebelumnya, tetapi menyortir file apa pun akan sering menghasilkan banyak baris duplikat yang berdekatan satu sama lain. Menjadi terlalu sulit untuk melihat garis-garis itu dengan benar.

Dalam skenario ini, uniq perintah membantu Anda untuk mencetak baris duplikat sekali dalam output. Ini benar-benar membuang baris yang diulang dan mencetak baris berulang pertama yang berdekatan, yang memungkinkan kita untuk melihat output dengan benar.

Baris yang digunakan dalam file input untuk uniq perintah tidak boleh melebihi 2048 byte (termasuk karakter baris baru apa pun) atau berisi karakter nol.

Sintaks

uniq [OPTION]... [INPUT [OUTPUT]]

Contoh

Di bawah ini adalah serangkaian contoh, dimulai tanpa opsi. Kami akan membahas beberapa kasus penggunaan. Beberapa hanya melibatkan uniq , dan yang lainnya mengandalkan perintah tambahan.

Tanpa opsi apa pun

Di bawah ini adalah file bernama file2 , yang berisi beberapa data. Perhatikan bahwa file ini tidak diurutkan, dan garis duplikat tidak berdekatan satu sama lain. Sebelum menggunakan uniq perintah dengan file ini, kita harus sort dia. Dalam contoh, saya telah mencoba uniq perintah dengan file asli, tetapi hanya mencetak output apa adanya, seperti cat keluaran. Pada contoh berikutnya, kita mengambil output dari sort perintah dan pipa dengan uniq memerintah. Ini membantu kami memahami perilaku uniq perintah:

$ cat file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ uniq file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ sort file2
Budhha
Budhha
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

$ sort file2 | uniq
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar

Dengan -c, --count opsi

Di bawah, pada contoh berikutnya, kami menggunakan -c pilihan untuk menghitung garis berulang. uniq perintah mencetak yang dihitung sebagai awalan dengan baris. Contoh di bawah ini memberi tahu kita bahwa baris pertama diulang tiga kali, baris kedua satu kali, dan baris ketiga tiga kali:

$ sort file2 | uniq -c
    3 Budhha
    1 ChhatrapatiShahuMaharaj
    3 Dr.B.R.Ambedkar

Dengan -d, --opsi berulang

-d opsi hanya mencetak garis yang diulang. Itu membuang baris non-duplikat. Oleh karena itu, baris ChhatrapatiShahuMaharaj telah dibuang dalam contoh di bawah ini:

$ sort file2 | uniq -d
Budhha
Dr.B.R.Ambedkar

Pada contoh di bawah ini, saya telah menggunakan -c opsi untuk memeriksa silang apakah -d opsi hanya mencetak garis yang berulang atau tidak:

$ sort file2 | uniq -cd
    3 Budhha
    3 Dr.B.R.Ambedkar

Dengan -D, opsi --all-repeated

-D opsi mencetak baris berulang dan membuang baris non-duplikat. Pada contoh di bawah ini, uniq perintah mencetak semua baris duplikat saja dan membuang baris non-duplikat:

$ sort file2 | uniq -D
Budhha
Budhha
Budhha
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

Dengan -u, --opsi unik

Berlawanan dengan opsi di atas, -u opsi mencetak garis unik yaitu, garis non-duplikat. Oleh karena itu, pada contoh di bawah ini, ia mencetak ChhatrapatiShahuMaharaj sebagai keluaran:

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

Dengan opsi -i, --ignore-case

Menggunakan -i pilihan, kita dapat mengabaikan sensitivitas huruf besar-kecil dari karakter. Di bawah ini saya telah memberikan output dari uniq perintah dengan dan tanpa -i pilihan untuk membandingkan:

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

Dengan -f, --skip-fields=N

Terkadang kita perlu melewati beberapa bidang untuk memfilter baris duplikat. Ini dimungkinkan menggunakan -f pilihan. Dalam contoh berikut, kami melewatkan bidang pertama (kolom pertama) untuk membandingkan garis duplikat dari bidang kedua. Saya telah memberikan kedua contoh, dengan dan tanpa -f opsi, untuk pemahaman yang lebih baik tentang perilaku opsi:

$ cat file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq -f 1 file5
Amit aaaa
Advi bbbb

[ Pembaca juga menyukai:Bekerja dengan pipa pada baris perintah Linux ]

Dengan opsi -s, --skip-char=N

Sama seperti field, kita juga bisa melewatkan karakter dengan menggunakan -s pilihan. Harap diingat bahwa uniq perintah hanya mencetak baris duplikat pertama dan membuang baris duplikat lainnya. Oleh karena itu 33aa dan 55bb telah dibuang. Ini contohnya:

$ cat file4
22aa
33aa
44bb
55bb

$ uniq file4
22aa
33aa
44bb
55bb

$ uniq -s 2 file4
22aa
44bb

Dengan opsi -w, --check-chars=N

Sama seperti melewatkan karakter, kita juga dapat mempertimbangkan karakter menggunakan -w pilihan, seperti pada contoh:

$ cat file6
aa12
aa34
bb56
bb78

$ uniq file6
aa12
aa34
bb56
bb78

$ uniq -w 2 file6
aa12
bb56

Dengan opsi --version

Gunakan --version opsi untuk memeriksa versi uniq perintah.

$ uniq --version
uniq (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.

[ Unduhan gratis:Lembar contekan perintah Linux tingkat lanjut. ] 

Menutup

uniq tidak mendeteksi garis berulang kecuali jika berdekatan. uniq perintah dapat menghitung dan mencetak jumlah baris yang berulang. Sama seperti garis duplikat, kita juga dapat memfilter garis unik (garis non-duplikat) dan juga dapat mengabaikan sensitivitas huruf besar/kecil. Kita dapat melewati bidang dan karakter sebelum membandingkan baris duplikat dan juga mempertimbangkan karakter untuk memfilter baris.

Setelah meninjau beberapa uniq opsi perintah, saya ingin membagikan gambar kecil untuk disimpan bersama Anda sebagai referensi.


Linux
  1. Cara menggunakan perintah sed Linux

  2. Cara menggunakan perintah grep Linux

  3. Cara menggunakan perintah history di Linux

  1. Kotak alat Sysadmin:Cara menggunakan perintah sortir untuk memproses teks di Linux

  2. Cara Menggunakan Perintah id di Linux

  3. Cara menggunakan perintah "layar" di Linux

  1. Cara Menggunakan Perintah sejarah Linux

  2. Cara Menggunakan Perintah md5sum di Linux

  3. Cara Menggunakan Perintah Linux xargs