Est-ce que grep offre un moyen de compter le nombre total de correspondances qu'il fait? L'option -c ne renvoie que le nombre de lignes correspondant à l'expression régulière, mais dans ce cas, j'ai plusieurs correspondances par ligne.
essaye ça:
grep -o -E "your expression" file |wc -l
bien, -E est juste un exemple, ça pourrait être -P, -F etc. le point est -o
tester:
kent$ echo "abc xxx yyy"|grep -cP "[a-z]{3}"
1
kent$ echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3
Il y a un indicateur -o qui indique que seule la sous-section correspondante de la ligne doit être imprimée.
Utilisez cela en conjonction avec wc -l:
grep -o "part of line" | wc -l
man grep l'explique également.
Comme alternative aux autres réponses, utilisez simplement grep:
grep -o "seach pattern" somefile.txt | grep -c ""
Le -o dans le premier grep sort chaque correspondance, et seulement la correspondance - pas la ligne entière (à moins que la ligne entière IS la correspondance, bien sûr). Le -c dans le second grep les compte alors.
C'est un peu plus de caractères à taper (comme, 4 ou 5), mais je trouve plus facile de se rappeler.