У меня есть файл, в котором, когда я использую file myFile
, мне возвращают myFile: ASCII text, with very long lines
, а затем я продолжаю открывать его как файл .txt, и он открывается в блокноте, как много IP-адреса. Например, 127.0.0.1 - - [20/Feb/2014:19:35:31 -0700] "GET /favicon.ico HTTP/1.1" 404 6008 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0"
и т. Д. Для различных строк.
Есть ли способ поиска по этому тексту ASCII, чтобы найти уникальные IP-адреса и который имеет наибольшее количество «хитов»? У меня возникают проблемы с поиском команд такого типа, поскольку я даже не уверен, что должен открывать их в файле .txt.
Можно использовать grep
извлечь IP-адреса, и sort
+ uniq
считать количество хитов:
grep -Po '^\d+(\.\d+){3}' filename | sort | uniq -c
grep
используется для поиска текста, соответствующего регулярному выражению-o
печать только текст, который соответствовал выражению а не всей строке-P
включает регулярные выражения стиля Perl^\d+(\.\d+){3}
- строка, которая соответствует: ^
) сопровождаемый\d+
) сопровождаемый\.\d+
) повторенный 3 раза ({3}
)sort
сортирует входuniq -c
печатает количество уникальных записей в отсортированном входе.