Bash Script: Zähle einzelne Zeilen in einer Datei

Situation:

Ich habe eine große Datei (Millionen Zeilen) mit IP-Adressen und Ports aus einer mehrstündigen Netzwerkerfassung, eine IP / Port pro Zeile. Zeilen haben folgendes Format:

ip.ad.dre.ss[:port]
Erwünschtes Ergebnis:

Für jedes Paket, das ich während der Protokollierung erhalten habe, ist ein Eintrag vorhanden, sodass es viele doppelte Adressen gibt. Ich möchte in der Lage sein, dies durch eine Art Shell-Skript auszuführen, das es in der Lage sein wird, es auf Zeilen des Formats zu reduzieren

ip.ad.dre.ss[:port] count

wohercount ist die Anzahl der Vorkommen dieser spezifischen Adresse (und des Ports). Es muss keine besondere Arbeit geleistet werden. Behandeln Sie verschiedene Ports als unterschiedliche Adressen.

Bisher verwende ich diesen Befehl, um alle IP-Adressen aus der Protokolldatei zu entfernen:

grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt

Daraus kann ich mit einem relativ einfachen regulären Ausdruck alle IP-Adressen entfernen, die von meiner Adresse gesendet wurden (die mir egal sind).

Ich kann dann Folgendes verwenden, um die eindeutigen Einträge zu extrahieren:

sort -u ips.txt > intermediate.txt

Ich weiß nicht, wie ich die Zeilenzahlen irgendwie mit sortieren kann.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage