Como procurar um padrão específico em um arquivo de log e contar o número de correspondências?

Como procurar um padrão específico em um arquivo de log e contar o número de correspondências?

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 -ca 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

informação relacionada