Angenommen, ich habe eine Datei, die Folgendes enthält:
A
A
A
B
CC
Ich möchte die Ausgabe so haben:
A 3
B 1
CC 1
text-processing
Cheng
quelle
quelle
uniq -c filename.txt | sed 's/[^0-9]*\\([0-9]\+\\) \\(.*\\)/\2 \1/'
sort | uniq
A \ A \ A \ B \ A \ CC
, dessen Ausgang nuruniq -c
zeigen würdeA 3
und später zeigenA 1
. Wenn Sie zuerstIch bin gerade mit einem ähnlichen Problem hergekommen. Daraus habe ich einen etwas fortgeschritteneren Befehl zusammengestellt, von dem ich hoffe, dass er für andere nützlich ist.
Wie Steven D in den obigen Kommentaren sagte, werden
uniq
nur benachbarte Wiederholungszeilen gezählt, daher müssen Sie die Zeilen zuerst sortieren. Danach finden wir die eindeutigen Zeilen und sortieren sie erneut, sodass die am häufigsten vorkommenden Zeilen oben stehen.Die Ausgabe wird in die Datei umgeleitet
output.txt
. Wenn Sie die Ergebnisse nur in der Befehlszeile anzeigen möchten, entfernen Sie die Umleitung und ändern Sie den letzten Befehl in,sort -n
sodass sich die am häufigsten verwendete Zeile unten befindet, dh definitiv noch auf dem Bildschirm.quelle
cat file.txt | sort
mit nur ersetzensort file.txt
. :)cat
etwas Interessanteres ersetzen kann . Da gibt es ja keinecat
.< file.txt sort | uniq -c
. Dies ist einfach zu bearbeiten und vermeidet dennoch das Unnötigecat
.