Katakanlah saya punya file yang berisi:
A
A
A
B
CC
Saya ingin memiliki output seperti ini:
A 3
B 1
CC 1
text-processing
Cheng
sumber
sumber
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
sort | uniq
A \ A \ A \ B \ A \ CC
, output hanyauniq -c
akan ditampilkanA 3
dan kemudian ditampilkanA 1
. Mengurutkan terlebih dahulu, akan menjamin semua garis identik dikelompokkan bersamaSaya baru saja datang ke sini dengan masalah yang sama. Dari sini, saya berhasil menyusun perintah yang sedikit lebih maju, yang saya harap bermanfaat bagi orang lain.
Seperti yang dikatakan Steven D dalam komentar di atas
uniq
hanya menghitung garis pengulangan yang berdekatan, jadi Anda perlu mengurutkan garis terlebih dahulu. Setelah itu kami menemukan garis-garis unik lalu mengurutkan lagi sehingga garis yang paling sering muncul adalah di atas.Output diarahkan ke file
output.txt
. Jika Anda hanya ingin melihat hasil pada baris perintah, hapus redirection dan ubah perintah terakhir kesort -n
sehingga baris paling umum akan berada di bagian bawah, yaitu pasti masih di layar.sumber
cat file.txt | sort
dengan adilsort file.txt
. :)cat
dengan sesuatu yang lebih menarik. Karena, Anda tahu, tidak adacat
.< file.txt sort | uniq -c
. Ini mudah diedit, dan tetap menghindari yang tidak perlucat
.