Contar el número de coincidencias con grep
Para contar el número de líneas que contiene un determinado patrón podemos usar el operador -c de grep, contando con que patrón no significa palabra. Veamos paso a paso.
Vamos a buscar cuántas veces se encuentra el patrón «en» dentro del poema «Un soneto me manda hacer Violante» de Lope de Vega:
$ grep en violante.txt que en mi vida me he visto en tanto aprieto; catorce versos dicen que es soneto; Yo pensé que no hallara consonante, mas si me veo en el primer terceto, no hay cosa en los cuartetos que me espante. Por el primer terceto voy entrando, y parece que entré con pie derecho, Ya estoy en el segundo, y aun sospecho
Vemos que se encuentra en ocho líneas, pero vemos que hay palabras que contienen «en» (dicen, pensé, entrando y entré) y las cuenta como coincidencia, porque, por defecto, grep no busca palabras sino patrones.
Si queremos buscar sólo las palabras, usaremos el modificador -w:
$ grep -w en violante.txt que en mi vida me he visto en tanto aprieto; mas si me veo en el primer terceto, no hay cosa en los cuartetos que me espante. Ya estoy en el segundo, y aun sospecho
Y ahora sólo nos muestra las líneas en las que sí que está la palabra «en». Y nos devuelve cuatro líneas.
Veamos qué nos devuelve con el modificador -c en una y otra circunstancia. Empezaremos sin acotar, a ver si nos devuelve ocho como en la primera búsqueda de este artículo:
$ grep -c en violante.txt 8
Y ahora comprobemos si acotando las búsquedas a palabras nos devuelve cuatro:
$ grep -wc en violante.txt 4