grep -c
est utile pour trouver combien de fois une chaîne apparaît dans un fichier, mais il ne compte chaque occurrence qu'une fois par ligne. Comment compter plusieurs occurrences par ligne ?
Je cherche quelque chose de plus élégant que :
perl -e '$_ = <>; print scalar ( () = m/needle/g ), "n"'
Réponse acceptée :
-o
de grep n'affichera que les correspondances, en ignorant les lignes ; wc
peut les compter :
grep -o 'needle' file | wc -l
Cela correspondra également à "aiguilles" ou "multi-aiguilles".
Pour faire correspondre uniquement des mots uniques, utilisez l'une des commandes suivantes :
grep -ow 'needle' file | wc -l
grep -o 'bneedleb' file | wc -l
grep -o '<needle>' file | wc -l