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