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.