Usando o Perl, testado no v5.10.0 construído para o darwin-thread-multi-2level (OSX)
To print the UserAgent column:
perl -n -e '/^([^ ]+) ([^ ]+) ([^ ]+) (\[[^\]]+\]) "(.*) (.*) (.*)" ([0-9\-]+) ([0-9\-]+) "(.*)" "(.*)"/; print "$11\n"' -- test.log
- opção
-n
enquanto cada linha emtest.log
- opção
-e
um programa de linha
Eu roubei e alterei o perlre que eu pesquisei no livro de receitas do PHP . Eu removi o $
do final do re para suportar formatos personalizados baseados no NCSA combinado. O padrão pode ser facilmente estendido para fornecer mais grupos.
Os grupos de expressões regulares ()
acabam como variáveis locais $1
to $n
Rápido, sujo e muito fácil de estender e criar scripts.
Alguns exemplos de canalização da saída:
-
| sort | uniq
valores de coluna exclusivos -
| sort | uniq | wc -l
contagem de colunas única
Crítica e melhorias bem-vindas