Em um arquivo de log muito grande, tenho entradas como:
FLUXO ENTRANDO em somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61.liberar()
A única mudança entre o que difere entre as entradas é a string após @
e antes .release()
(a parte em negrito).
Existem outras entradas como as seguintes que precisam ser descartadas na pesquisa:
FLUXO ENTRANDO em somecompany.somepackage.datacontrol.provider.DataProvider@c37ae61.algo mais()
Portanto, meu padrão de pesquisa deve terminar com.release()
.
Como posso saber o número dessas ocorrências no arquivo de log (o número de linhas correspondentes) e também imprimir todos os padrões correspondentes?
PS: Estou usando ambiente Linux.
Responder1
Acho que grep -c
a opção é exclusiva - não é possível combinar a opção -c com outra opção para gerar linhas correspondentesEuma contagem. Então, usar tee gera as correspondênciasEescreva as correspondências em um arquivo temporário e conte as linhas no arquivo.
grep 'FLOW ENTERING.*release()' k | tee /tmp/grep.tmp && wc -l /tmp/grep.tmp
Responder2
você pode usar
grep '.release()' file|wc -l