Como pesquisar texto ASCII com o Ubuntu Terminal

0

Eu tenho um arquivo em que quando eu uso o file myFile eu recebo retornado myFile: ASCII text, with very long lines

Eu então comecei a abri-lo como um arquivo .txt e ele se abre no bloco de notas como muitos endereços IP. Por exemplo 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" e assim por várias linhas.

Existe uma maneira de pesquisar através deste texto ASCII para encontrar endereços IP únicos e que tem mais "acessos"? Estou tendo problemas para encontrar esse tipo de comando, pois nem tenho certeza se devo abri-lo em um arquivo .txt.

    
por Robert 26.03.2015 / 08:36

1 resposta

2

Você pode usar grep para extrair os endereços IP e sort + uniq para contar o número de ocorrências:

grep -Po '^\d+(\.\d+){3}' filename | sort | uniq -c 
  • grep é usado para procurar texto que corresponda a uma expressão regular
  • -o imprime apenas o texto que corresponde à expressão e não a linha inteira
  • -P ativa expressões regulares no estilo Perl
  • ^\d+(\.\d+){3} - uma string que corresponde a:
    1. O início da linha ( ^ ) seguido por
    2. Qualquer número de dígitos ( \d+ ) seguido por
    3. Um ponto e qualquer número de dígitos ( \.\d+ ) repetidos 3 vezes ( {3} )
  • sort classifica a entrada
  • uniq -c imprime o número de entradas exclusivas na entrada classificada.
por muru 26.03.2015 / 08:49