Hầu hết các câu trả lời ở đây khớp với nội dung của dòng được tính bằng các biểu thức thông thường được nhúng vào chương trình Awk. Nếu bạn cần khớp các dòng với nội dung có thể chứa các ký tự đặc biệt (với biểu thức Awk hoặc biểu thức chính quy), tốt hơn là thực sự so sánh các chuỗi cho đẳng thức. Do đó, tôi đề xuất kịch bản Awk sau đây như là một biến thể của câu trả lời của muru :
BEGIN {
count = 0;
}
{
if ($0 == needle) {
if (count) {
print count;
count = 0;
}
} else {
count++;
}
}
Lưu trữ dưới dạng tệp văn bản, ví dụ: count-rows.awkvà gọi nó như sau:
awk -f count-rows.awk -v needle=X input
Bạn có thể điều chỉnh giá trị needletheo ý thích của bạn. Ưu điểm của phương pháp này là bạn có thể gọi chương trình từ tập lệnh shell với giá trị tùy ý needlemà không thoát khỏi các vấn đề:
awk -f count-rows.awk -v needle="$needle" input