Das Zählen eindeutiger Zeilen in einer Datei ist eine häufige Aufgabe unter Linux. Dieser Artikel stellt zwei effiziente Kommandozeilenmethoden vor: die Verwendung von sort
und uniq
sowie die Verwendung von awk
.
Inhaltsverzeichnis
Zählen eindeutiger Zeilen mit sort
und uniq
Diese Methode kombiniert die Leistungsfähigkeit von sort
und uniq
für einen unkomplizierten Ansatz. sort
ordnet die Zeilen alphabetisch an, eine Voraussetzung für uniq
, das nur aufeinanderfolgende identische Zeilen zählt. Die Option -c
in uniq
fügt jeder Zeile eine Zählervoranstellung hinzu.
So zählen Sie eindeutige Zeilen in file.txt
:
sort file.txt | uniq -c
Dies zeigt jede eindeutige Zeile mit ihrer Anzahl an. Um die Gesamtzahl der eindeutigen Zeilen zu erhalten, leiten Sie die Ausgabe an wc -l
weiter:
sort file.txt | uniq -c | wc -l
Beispiel:
Wenn file.txt
enthält:
apple
banana
apple
orange
banana
apple
gibt sort file.txt | uniq -c
aus:
3 apple
2 banana
1 orange
Und sort file.txt | uniq -c | wc -l
gibt aus:
3
Zählen eindeutiger Zeilen mit awk
awk
bietet eine flexible Lösung, die besonders für komplexere Szenarien nützlich ist. Diese Methode verwendet ein assoziatives Array, um eindeutige Zeilen und deren Anzahl zu verfolgen.
So zählen Sie eindeutige Zeilen und zeigen sie mit ihrer Anzahl an:
awk '{count[$0]++} END {for (line in count) print count[line], line}' file.txt
Dieses Skript erhöht den Zähler für jede Zeile im count
-Array, wobei die Zeile als Schlüssel verwendet wird. Der END
-Block iteriert durch das Array und gibt die Anzahl jeder Zeile und die Zeile selbst aus.
Um nur die Gesamtzahl der eindeutigen Zeilen zu erhalten:
awk '{count[$0]++} END {print length(count)}' file.txt
Dies verwendet length(count)
, um die Anzahl der eindeutigen Zeilen (die Größe des Arrays) direkt auszugeben.
Beispiel:
Mit der gleichen file.txt
erzeugt der erste awk
-Befehl die gleiche Ausgabe wie die sort | uniq -c
-Methode. Der zweite awk
-Befehl gibt 3
aus, was drei eindeutige Zeilen anzeigt.
Wählen Sie die Methode, die Ihren Anforderungen am besten entspricht. sort
und uniq
sind für einfache Aufgaben einfacher; awk
bietet mehr Flexibilität für komplexe Szenarien.