Більшість відповідей тут відповідають змісту рядка, що підраховується, використовуючи регулярні вирази, вбудовані в програму 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