Misalkan ada kolom nilai numerik seperti berikut:
File1:
1
2
3
3
3
4
4
4
5
6
Saya ingin hasilnya:
3
4
Artinya, hanya garis yang diulang. Apakah ada alat baris perintah untuk mengetahui ini di Linux? (NB: Nilai-nilai diurutkan secara numerik).
shell
text-processing
Pikiran aneh
sumber
sumber
man uniq
.Jawaban:
Anda dapat menggunakan
uniq(1)
ini:Ini akan mencetak duplikat saja. File input perlu disortir sedemikian rupa sehingga semua duplikat berurutan (yang tampaknya), jadi jalankan melalui sortir terlebih dahulu jika tidak.
sumber
sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'
untuk rangkap tiga; ganti "3" dengan sembarang N untuk pelat-Nsort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'
untuk rangkap tigaMenggunakan
uniq
danawk
:sumber
cat
?uniq -c File1
dan mirip dengan banyak alat lainnya. Mungkin itulah yang terjadi di sini.Jalankan ini:
perl -ne 'print if $a{$_}++' filename.txt
sumber
3\n3\n4\n\4n
untuk input File1 yang jelas salah.uniq
mengharuskan daftar Anda untuk dipesan, urutkan default ke abjadsort | uniq -d path/to/your/filename
atau
cat fileName | sort | uniq -d path/to/your/filename
sumber