sytuacja:
Mam duży plik (mln linii) zawierające adresy IP i porty z kilku godzinnym przechwytywania sieci, jedno IP/portów w wierszu. Linie są tego formatu:Bash Script: Liczba unikatowych linii w pliku
ip.ad.dre.ss[:port]
Pożądany wynik:
Jest wpis dla każdego pakietu, jaką otrzymałem podczas logowania, więc istnieje wiele zduplikowanych adresów. Chciałbym być w stanie uruchomić ten skrypt powłoki poprzez pewnego rodzaju, która będzie w stanie zmniejszyć go do linii formatu
ip.ad.dre.ss[:port] count
gdzie count
jest liczba wystąpień tego konkretnego adresu (i portu). Nie trzeba wykonywać żadnych specjalnych zadań, traktuj różne porty jako różne adresy.
tej pory używam tego polecenia, aby zeskrobać wszystkie adresy IP z pliku dziennika:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
od tego, czy mogę używać dość proste regex zeskrobać się wszystkie adresy IP które zostały wysłane przez mój adres (który nie dbam o)
można następnie użyć następujących wydobyć unikalne wpisy:
sort -u ips.txt > intermediate.txt
nie wiem, w jaki sposób można agregować z linii C w jakiś sposób z sortowaniem.
Follow-up: Używam tego dosłownie każdego dnia. Jak mogłem przetrwać bez tego. – Wug
Przyszedłem tutaj, aby to zagłosować, ale już zostałem wybrany przeze mnie. – Worker
Dodaj kolejny sortuj, aby uzyskać najbardziej popularne wyniki: "sort ips.txt | uniq -c | sort -bgr' –