Как искать текст ASCII с помощью терминала Ubuntu

У меня есть файл, в котором, когда я использую 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.

0
задан 26 March 2015 в 10:40

1 ответ

Можно использовать grep извлечь IP-адреса, и sort + uniq считать количество хитов:

grep -Po '^\d+(\.\d+){3}' filename | sort | uniq -c 
  • grep используется для поиска текста, соответствующего регулярному выражению
  • -o печать только текст, который соответствовал выражению а не всей строке
  • -P включает регулярные выражения стиля Perl
  • ^\d+(\.\d+){3} - строка, которая соответствует:
    1. Начало строки (^) сопровождаемый
    2. Любое количество цифр (\d+) сопровождаемый
    3. Точка и любое количество цифр (\.\d+) повторенный 3 раза ({3})
  • sort сортирует вход
  • uniq -c печатает количество уникальных записей в отсортированном входе.
2
ответ дан 26 March 2015 в 10:40

Другие вопросы по тегам:

Похожие вопросы: