La mayoría de las respuestas aquí coinciden con el contenido de la línea a contar utilizando expresiones regulares incrustadas en el programa Awk. Si necesita hacer coincidir líneas con contenido que puede contener caracteres especiales (ya sea Awk o expresiones regulares), sería mejor comparar las cadenas para la igualdad. Por lo tanto, propongo el siguiente script Awk como una variante de la respuesta de muru :
BEGIN {
count = 0;
}
{
if ($0 == needle) {
if (count) {
print count;
count = 0;
}
} else {
count++;
}
}
Almacénelo como un archivo de texto, por ejemplo count-rows.awk
, e invoquelo de la siguiente manera:
awk -f count-rows.awk -v needle=X input
Puede ajustar el valor needle
a su gusto. La ventaja de este método es que puede invocar el programa desde un script de shell con un valor arbitrario needle
sin problemas:
awk -f count-rows.awk -v needle="$needle" input