Ситуация:
У меня есть большой файл (миллионы строк), содержащий IP-адреса и порты из нескольких сетевых захватов, один ip/порт на строку. Строки имеют такой формат:
ip.ad.dre.ss[:port]
Желаемый результат:
Существует запись для каждого пакета, который я получил при регистрации, поэтому существует много дубликатов адресов. Я хотел бы иметь возможность запускать это через оболочку script, которая сможет свести ее к строкам в формате
ip.ad.dre.ss[:port] count
где count
- количество вхождений этого конкретного адреса (и порта). Никакой специальной работы не нужно делать, обрабатывать разные порты как разные адреса.
До сих пор я использую эту команду для очистки всех IP-адресов из файла журнала:
grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt
Из этого я могу использовать довольно простое регулярное выражение, чтобы очистить все ip-адреса, которые были отправлены по моему адресу (что меня не волнует)
Затем я могу использовать следующее, чтобы извлечь уникальные записи:
sort -u ips.txt > intermediate.txt
Я не знаю, как я могу как-то сгруппировать число строк.