Bunu yerleşik komutlarla kolayca yapabilirsiniz.
- Dosyanın içeriğini besleyin
sort
. Bir sonraki adım için buna ihtiyacımız var.
- Bu gider
uniq -c
. Her satırın benzersiz oluşumunu sayar. Benzer çizgiler bitişik değilse, daha önce sıralama yapmadan işe yaramazdı.
- Ardından,
sort
şimdi ters sırayla ( r
) ve çıktının sayısal ( n
) yorumuna dayalı olarak sıralayan bir başkasına besleyin uniq
. Sayısal seçeneğe ihtiyacımız var, aksi takdirde sayıların önündeki boşluk yanlış sonuçlara yol açacaktır ( daha fazla bilgi için GNU'nun sort
yardımına bakın).
- Son olarak, sadece ilk oniki satırı ile göster
head
.
Komut daha sonra şöyle olur:
sort test.txt | uniq -c | sort -rn | head -n 12
Buradaki çıktı, gerçekleşen olayların gerçek sayısını içerir.
Yalnızca ham satır listesini almak için, çıktıyı şu noktalara bağlayabilirsiniz sed
:
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
Misal:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
İlk komuttan çıktı alın, ancak aşağıdakilerden sadece 2 tanesini seçin head
:
6 Hello there!
3 Look at me!
İkinci komuttan çıktı:
Hello there!
Look at me!