Sortiert zu uniq unerwartete Ausgabe

375
trueCamelType

Ich habe eine Datei, die so aussieht:

"string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,, "string",192.168.1.0,,TX,192.168.1.1,,,100,0,0,10,10,10,, "string",192.168.1.0,,TX,192.168.1.4,,,100,0,0,10,10,10,, "string",192.168.1.0,,TX,192.168.1.2,,,100,0,0,10,10,10,, 

Mit diesem Befehl erwarte ich, dass er die zweite IP-Adresse abruft und im Wesentlichen auflistet, wie oft diese IP in dieser Datei aufgeführt ist.

cat originalFile.txt | awk -F "," '' | sort | uniq -c > outputFile.txt 

Dies wird falsch sortiert. Die Ausgabedatei soll wie folgt aussehen (geordnet nach der ersten Spalte)

1 192.168.1.1 1 192.168.1.4 2 192.168.1.2 

Ich habe versucht, den Sortierabschnitt in zu ändern

sort -n -k1 

Ich denke, das Problem ist, dass ich sortiere, bevor es uniq ausführt, aber jede andere Reihenfolge scheint den Prozess zu durchbrechen. Im Moment ist mein Fix, zwei Befehle wie diese auszuführen.

 cat originalFile.txt | awk -F "," '' | sort | uniq -c > outputFile1.txt sort -n -k1 outputFile1.txt > outputFile2.txt 

Offensichtlich ist die Verwendung einer temporären Datei nicht ideal, und ich bin mir sicher, dass ich die Datei nur geringfügig ändern und in eine andere Reihenfolge bringen muss. Jede Hilfe wird geschätzt.

0
`uniq -c` sortiert nach den Elementen selbst, nicht nach der Anzahl. Wenn Sie nach der Zählung sortieren möchten, müssen Sie die Ausgabe erneut per Pipe sortieren. ernie vor 9 Jahren 0

1 Antwort auf die Frage

1
jjanes

Nach uniq sortieren, dann nach endgültiger Reihenfolge sortieren:

cat originalFile.txt | awk -F "," '' | sort | uniq -c | sort -n