Contando el número total de coincidencias con grep en lugar de cuántas líneas coinciden


29

¿Grep ofrece una manera de contar el número total de coincidencias que hace? La opción -c solo devuelve el número de líneas que coinciden con la expresión regular, pero en este caso tengo varias coincidencias por línea.

Respuestas:


29

prueba esto:

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

bueno, -E es solo un ejemplo, podría ser -P, -F, etc. el punto es -o

prueba:

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

Hay un indicador -o que indica que solo se debe imprimir la subsección coincidente de la línea.

Úselo junto con wc -l:

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

man grep también lo explica.


1

Como alternativa a las otras respuestas, usando solo grep:

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

El -o en el primer grep genera cada coincidencia, y solo la coincidencia, no toda la línea (a menos que toda la línea ES la coincidencia, por supuesto). El -c en el segundo grep los cuenta.

Hay unos pocos caracteres más para escribir (como 4 o 5), pero me resulta más fácil de recordar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.