Usando bash
, grep
e awk
:
Assim você obtém todos os números IP correlacionados com o arquivo page1.html
:
awk '/page1\.html/ { print $2 }' log
Para os dados de exemplo, isso gerará 12.34.56.78
.
Isso pode ser usado para obter todas as entradas de log que contêm esse endereço IP:
grep -wF -f <( awk '/page1\.html/ { print $2 }' log ) log
Isso usa o resultado do comando awk
como um padrão e examina o arquivo de registro uma segunda vez para gerar todas as linhas que contêm esse IP. Isso retorna a primeira e a última linha do exemplo.
O sinal -w
e -F
para grep
é usado para informar grep
para interpretar o padrão (endereço IP) como uma string fixa ( -F
) e somente retornar linhas que contenham essa cadeia como uma palavra inteira ( -w
). Isso significa que 12.34.56.789
não será correspondido pelo padrão de string fixo 12.34.56.78
.
A partir desse resultado, podemos remover as linhas que representam page1.html
com
grep -wF -f <( awk '/page1\.html/ { print $2 }' log ) log | grep -vF 'page1.html'
Agora você tem todas as entradas de log produzidas pelos visitantes na página page1.html
(mas não incluindo a própria página page1.html
).
Se você deseja obter as entradas para uma outra página particular , altere a última grep -vF 'page1.html'
para grep -F 'otherpage.html'
.
Tenho certeza de que existe uma ferramenta de análise e análise de logs mais robusta, mas, se houver, não sei sobre eles (não faço a análise de logs com muita frequência).