Linux'ta en sık görülen satırları dosyadan alın


11

Her satırda çeşitli kelimeler olan bir metin dosyası var.
Dosyada en sık görülen 12 satırı nasıl bulabilir ve görüntüleyebilirim?
Komut dosyası komutlarında pek iyi değilim.

Eğer komutun nasıl kullanılacağını anlayabilmem ve komutlar hakkındaki bilgimi genişletebilmem için komut ve bir açıklama alabilirsem harika olurdu!


Yanıtlar:


21

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 sortyardı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!

1
Kullanmadan önce sıralamanız gerekir uniq.
cYrus

@slhck: Teşekkür ederim! Bir soru: sort -rnSıralamayı, her satırın yanındaki sayıyı sıralama alanı olarak kullanarak ters sırayla kullanıyor uniq -cmu? Böyle bir şeyin k1veya bunun gibi bir şeyin kullanılabileceğini düşündüm
Jim

@ Jim Tam olarak. tarafından üretilen sayıyı rtersine çevirir ve nsayısal olarak sıralar uniq. Tam olarak ne demek istiyorsun k1?
Ocak'ta slhck

@slhck: Bu komutları kullanarak anlamaya çalışıyordum manve bir -kşeyi kullanan bir sözdiziminin sıralanacak alanı seçmek için kullanılması gerektiğini anladım
Jim

@cYrus: Önceden bir çeşitlendirmenin gerekli olduğu son durum nedir?
Jim

3

Senin dağıtıma varsa logtop

cat your_file | logtop

Dosyanız bir günlük dosyası gibi sürekli büyüyorsa şunu deneyin:

tail -f your_log | logtop
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.