положения:
У меня есть большой файл (миллионы строк), содержащие IP-адрес и порты из несколько захвата сети часов, один IP/порта в строку. Линии этого формата:Bash Script: подсчет уникальных строк в файле
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
Я не знаю, как я могу агрегировать линия с унции как-то сорта.
Последующие меры: Я использую это буквально каждый день. Как я выжил без него. – Wug
Я пришел сюда, чтобы проголосовать, но он уже проголосовал за меня. – Worker
Добавьте другой вид, чтобы получить наиболее распространенные результаты сверху: 'sort ips.txt | uniq -c | sort -bgr' –