Stellen Sie sich vor, es gibt 3 Textdateien.
1.txt:
a
b
c
2.txt:
f
c
d
3.txt:
b
c
f
Wie sortiere ich sie nach Häufigkeit der einzelnen "Zeileninhalte" ? (Bei Kollisionen alphabetisch)
Ergebnis:
c
b
f
a
d
Sie können verwendet werden sort
und uniq
die Linien von Frequenzen zu sortieren.
sort *.txt | uniq -c | sort -k1,1nr -k2 | sed 's/^ *[0-9]* //'
Die Sekunde sort
verwendet die Sekundärseite -k2
, um die Zeilen derselben Frequenz alphabetisch zu sortieren. Das Finale sed
entfernt nur die Frequenzen.
Sie können mit sort und uniq in absteigender Reihenfolge der Häufigkeit sortieren:
Wenn Sie die Zählung entfernen möchten:
Beachten Sie, dass zwei Anrufe an
sort
erforderlich sind. Der erste Grund ist, dassuniq -c
eine sortierte Eingabe erforderlich ist. Die zweite wird benötigt, um die Zeilen in absteigender numerischer Reihenfolge nach Anzahl (Häufigkeit) zu sortieren.quelle