Filtrar um arquivo de log

1

Eu tentei filtrar meu arquivo de log pela funcionalidade Por exemplo:

195.xx.x.x - - [13/Apr/2017:09:60:xx +0200] "POST /userx/index.php?m=contacts&xxxx...
192.xx.x.x - - [13/Apr/2017:09:45:xx +0200] "POST /userx/index.php?m=customer&xxxx...
197.xx.x.x - - [13/Apr/2017:09:10:xx +0200] "POST /userx/index.php?m=meeting&xxxx...
197.xx.x.x - - [13/Apr/2017:09:20:xx +0200] "POST /userx/index.php?m=dashboard&xxxx...

Neste caso, minhas funcionalidades são contatos, cliente, reunião, painel Eu tento ignorar a página de boas vindas que é por padrão. Eu usei

awk '$7 !~ /m=dashboard/ ' log file

minha pergunta é: Se eu posso ignorar mais funcionalidades que estão em um arquivo?

cat file:
dashboard
meeting

Para ter apenas estas linhas:

195.xx.x.x - - [13/Apr/2017:09:60:xx +0200] "POST /userx/index.php?m=contacts
192.xx.x.x - - [13/Apr/2017:09:45:xx +0200] "POST /userx/index.php?m=customer
    
por Sara Quispe 13.04.2017 / 10:46

2 respostas

0
sed '/\//!{H;d};G;/m=\(.*\)\n.*/d;P;d' file log

Explicação: Primeiro, leia file com as palavras-chave de filtro e, em seguida, o arquivo de log. As linhas que não contêm / são interpretadas como palavras-chave e anexadas ao espaço de espera ( H ). Outras linhas recebem o espaço de suspensão anexado ( G ) e são excluídas se a palavra-chave após o m= for repetida na lista de palavras-chave ( /m=\(.*\)\n.*/d ). Caso contrário, será impresso sem o espaço de retenção anexado ( P ).

    
por 13.04.2017 / 12:27
0

Como sua pergunta parece fazer mais sentido agora, acho que você está procurando algo assim:

awk -F= 'NR==FNR{l[$NF]=1; next} { if (!l[$NF]) print;}' ignore_words your_log_file

Editar

Como Sundeep apontou no comentário acima, você poderia usar grep da seguinte forma:

grep -Fvf ignore_words log_file

Para ver para que as opções -Fvf são usadas, consulte man grep page.

    
por 13.04.2017 / 12:56