grep 'test' testdoc|wc -l
compte le nombre de lignes où votre modèle se produit et il est équivalent à
grep -c 'test' testdoc
Pour prendre en compte plusieurs correspondances par ligne, utilisez l'option -o
grep -o 'test' testdoc|wc -l
Pour obtenir les deux lignes et compter, vous pouvez utiliser tee
en sortie dans un fichier temporaire f
et ajouter à f
le résultat de la deuxième grep
:
grep "test" testdoc |tee >(wc -l 1>&f)|grep -o "test"|wc -l 1>>f && cat f
# or to get both outputs in a line:
grep "test" testdoc |tee >(wc -l|tr '\n' ' ' 1>&f)|grep -o "test"|wc -l 1>>f && cat f
Voici une autre solution de ne pas utiliser grep
(puisque dans certaines distributions -o
l'option est manquante)
awk 'BEGIN{lCount=0;count=0}{c=gsub(/test/,"");count+=c;if(c)lCount+=1;}END{print(lCount,count)}' testdoc
Vous êtes les bienvenus. Si cela vous a aidé, vous pouvez accepter (et augmenter) ma réponse.^_^ – tso
@tso: Pourriez-vous s'il vous plaît expliquer la partie 'awk 'END {print NR} 1''? – User123
mise à jour de la réponse, explication ajoutée – tso