Ich habe eine Textdatei mit verschiedenen Wörtern pro Zeile.
Wie kann ich die 12 am häufigsten vorkommenden Zeilen in der Datei finden und anzeigen?
Ich bin nicht sehr gut mit Skriptbefehlen.
Wenn ich den Befehl und eine Erklärung bekommen könnte, damit ich verstehen kann, wie man ihn benutzt, und mein Wissen über Befehle erweitern kann, wäre es großartig!
Antworten:
Sie können dies einfach mit integrierten Befehlen tun.
sort
. Wir brauchen das für den nächsten Schritt.uniq -c
. Es wird das eindeutige Vorkommen jeder Zeile gezählt. Wenn die ähnlichen Zeilen nicht benachbart sind, hätte dies ohne vorheriges Sortieren nicht funktioniert.sort
, der nun in umgekehrter Reihenfolge (r
) sortiert und auf der numerischen (n
) Interpretation deruniq
Ausgabe basiert . Wir brauchen die numerische Option, da sonst das Leerzeichen vor den Zahlen zu falschen Ergebnissen führen würde (weitere Informationen finden Sie insort
der Hilfe von GNU ).head
.Der Befehl wäre dann:
Die Ausgabe hier enthält die tatsächliche Anzahl der Vorkommen.
Um nur die unformatierte Liste der Zeilen zu erhalten, können Sie die Ausgabe an
sed
folgende Adresse weiterleiten :Beispiel:
Ausgabe vom ersten Befehl, aber nur Auswahl von 2 aus
head
:Ausgabe des zweiten Befehls:
quelle
uniq
.sort -rn
Sortierungen in umgekehrter Reihenfolge unter Verwendung der Nummer neben jeder Zeile, die von erzeugt wird, als Sortierfelduniq -c
? Ich dachte, dass so etwask1
oder so etwas verwendet werden würder
kehrt um undn
sortiert numerisch nach der vonuniq
. Was genau meinst du damitk1
?man
und ich habe verstanden, dass eine Syntax mit-k
etwas verwendet werden muss, um das Feld zu sortieren, nach dem sortiert werden sollWenn Ihre Distribution Logtop hat
Wenn Ihre Datei wie eine Protokolldatei ständig wächst, versuchen Sie Folgendes:
quelle