Большинство ответов здесь соответствуют содержанию строки, которая будет подсчитана с использованием регулярных выражений, встроенных в программу Awk. Если вам нужно сопоставить строки с содержимым, которое может содержать специальные символы (либо в Awk, либо в регулярных выражениях), было бы лучше на самом деле сравнить строки на равенство. Поэтому я предлагаю следующий сценарий Awk как вариант ответа Муру :
BEGIN {
count = 0;
}
{
if ($0 == needle) {
if (count) {
print count;
count = 0;
}
} else {
count++;
}
}
Сохраните его как текстовый файл, например count-rows.awk
, и вызовите его следующим образом:
awk -f count-rows.awk -v needle=X input
Вы можете настроить значение needle
по своему вкусу. Преимущество этого метода в том, что вы можете вызывать программу из сценария оболочки с произвольным значением, чтобы needle
избежать проблем:
awk -f count-rows.awk -v needle="$needle" input