Ich habe eine Datei im folgenden Format:
$ cat file.txt
27.33.65.2
27.33.65.2
58.161.137.7
121.50.198.5
184.173.187.1
184.173.187.1
184.173.187.1
Was ist der beste Weg, um die Datei file.txt
in ein Format wie das folgende zu analysieren :
27.33.65.2: 2
58.161.137.7: 1
121.50.198.5: 1
184.173.187.1: 3
Mit anderen Worten, ich möchte die Datei durchlaufen und zählen, wie oft jede IP-Adresse angezeigt wird. Ich habe es bereits durchlaufen, sort
damit alle IP-Adressen in Ordnung und direkt nacheinander sind.
Antworten:
Du schaust nach
uniq -c
Wenn die Ausgabe nicht Ihren Wünschen entspricht, kann sie problemlos analysiert und neu formatiert werden.
Zum Beispiel:
quelle
uniq
undawk
scheint miruniq
nur bei sortierten Eingaben funktioniert (es stimmt mit benachbarten übereinstimmenden Zeilen überein, nicht mit Zeilen aus der Datei).sort
!uniq
scheint in der Tat die klügere Lösung zu sein. Der awk Weg:quelle
sort
zu meiner Antwort ist immer noch schneller, da weniger Elemente sortiert werden müssen. ;-)Die beste Sortierdatei wird dann von unic -c gezählt
sort filename | uniq -c
quelle
uniq -c
würde funktionieren, aber die Ausgabe im falschen Format liefern. Aus diesem Grund wird in der akzeptierten Antwortsort
die Ausgabe von nicht verwendet und stattdessen neu formatiertuniq -c
.Ich würde Python verwenden. Auf jedem Linux-Stemem ist heutzutage Python2 installiert.
Fügen Sie jede IP-Adresse als Schlüssel = Wert-Paare in ein Diktat (assoziatives Array) ein, dh {"12.34.56.78": 1, "87.76.43.21": 3}.
Sie 'verifizieren' die IP-Adresse als Schlüssel und erhöhen den Wert um 1. Wenn Sie defaultdict ("ip") verwenden und der Schlüssel nicht vorhanden ist, wird er mit dem Standardwert 0 erstellt. Wenn der Schlüssel vorhanden ist Standarddict macht bereits nichts. Der Wert wird in der nächsten Zeile erhöht.
Outout-Datei:
Ich weiß, dass Sie nach einer Befehlszeilenlösung gesucht haben, aber wie Sie sehen, handelt es sich um eine elegant formatierte Anzeige, die nur etwa ein Dutzend Zeilen benötigt. Python ist ein hervorragendes Tool für die Verwaltung.
quelle