A maioria das respostas aqui corresponde ao conteúdo da linha a ser contada usando expressões regulares incorporadas ao programa Awk. Se você precisar combinar linhas com conteúdo que possa conter caracteres especiais (para Awk ou expressões regulares), seria melhor comparar as seqüências de caracteres para obter a igualdade. Portanto, proponho o seguinte script do Awk como uma variante da resposta de muru :
BEGIN {
count = 0;
}
{
if ($0 == needle) {
if (count) {
print count;
count = 0;
}
} else {
count++;
}
}
Armazene-o como um arquivo de texto, por exemplo count-rows.awk
, e chame-o da seguinte maneira:
awk -f count-rows.awk -v needle=X input
Você pode ajustar o valor needle
ao seu gosto. A vantagem desse método é que você pode invocar o programa a partir de um script de shell com um valor arbitrário, needle
sem problemas de escape:
awk -f count-rows.awk -v needle="$needle" input