Holen Sie sich die am häufigsten vorkommenden Zeilen aus einer Datei in Linux

Holen Sie sich die am häufigsten vorkommenden Zeilen aus einer Datei in Linux

Ich habe eine Textdatei, die pro Zeile verschiedene Wörter enthält.
Wie kann ich die 12 am häufigsten vorkommenden Zeilen in der Datei finden und anzeigen?
Ich bin nicht sehr gut mit Skriptbefehlen.

Es wäre großartig, wenn ich den Befehl und eine Erklärung bekommen könnte, damit ich die Verwendung verstehe und mein Wissen über Befehle erweitern kann!

Antwort1

Dies können Sie ganz einfach mit integrierten Befehlen tun.

  • Geben Sie den Inhalt der Datei ein sort. Diesen benötigen wir für den nächsten Schritt.
  • Dies geht an uniq -c. Es wird das eindeutige Vorkommen jeder Zeile gezählt. Wenn die ähnlichen Zeilen nicht nebeneinander liegen, hätte dies ohne vorheriges Sortieren nicht funktioniert.
  • Dann füttere es an einen anderen sort, der nun in umgekehrter Reihenfolge ( r) sortiert und auf der numerischen ( n) Interpretation deruniq Ausgabe sortiert. Wir brauchen die numerische Option, da sonst das Leerzeichen vor den Zahlen zu falschen Ergebnissen führen würde (sieheGNUsort Hilfefür mehr).
  • Zeigen Sie abschließend nur die ersten zwölf Zeilen mit an head.

Der Befehl wäre dann:

sort test.txt | uniq -c | sort -rn | head -n 12

Die Ausgabe hier enthält die tatsächliche Anzahl der Vorkommen.

Um nur die reine Zeilenliste zu erhalten, können Sie die Ausgabe an Folgendes weiterleiten sed:

sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'

Beispiel:

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!

Ausgabe des ersten Befehls, aber nur Auswahl von 2 aus head:

6 Hello there!
3 Look at me!

Ausgabe des zweiten Befehls:

Hello there!
Look at me!

Antwort2

Wenn Ihre Distributionlogtop

cat your_file | logtop

Wenn Ihre Datei ständig wächst, z. B. eine Protokolldatei, versuchen Sie Folgendes:

tail -f your_log | logtop

verwandte Informationen