Contando o número total de correspondências com grep em vez de quantas linhas correspondem


29

O grep oferece uma maneira de contar o número total de correspondências que ele faz? A opção -c retorna apenas o número de linhas que correspondem à regex, mas, neste caso, tenho várias correspondências por linha.

Respostas:


29

tente isto:

grep -o -E "your expression" file |wc -l

bem, -E é apenas um exemplo, poderia ser -P, -F etc. ponto é -o

teste:

kent$  echo "abc xxx yyy"|grep -cP "[a-z]{3}"      
1

kent$  echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3

8

Há um sinalizador -o que indica que apenas a subseção correspondente da linha deve ser impressa.

Use isso em conjunto com wc -l:

grep -o "part of line" | wc -l

o homem grep também explica.


1

Como alternativa às outras respostas, usando apenas grep:

grep -o "seach pattern" somefile.txt | grep -c ""

O -o no primeiro grep gera cada partida, e apenas a partida - não a linha inteira (a menos que a linha inteira seja a partida, é claro). O -c no segundo grep os conta.

São mais alguns caracteres para digitar (como 4 ou 5), mas acho mais fácil lembrar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.