Bash Script: подсчет уникальных строк в файле
У меня есть большой файл (миллионы строк), содержащий IP-адреса и порты из нескольких часов захвата сети, один IP / порт на линию. Линии имеют этот формат:
ip.ad.dre.ss[:port]
Желаемый результат:Существует запись для каждого пакета, который я получил во время регистрации, поэтому существует много дублирующих адресов. Я хотел бы иметь возможность запустить это через какой-то сценарий оболочки, который сможет уменьшить его до строк формата
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
Я не знаю, как я могу агрегировать подсчеты строк с помощью сортировки.