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.awk
và gọi nó như sau:
awk -f count-rows.awk -v needle=X input
Bạn có thể điều chỉnh giá trị needle
theo ý 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 ý needle
mà không thoát khỏi các vấn đề:
awk -f count-rows.awk -v needle="$needle" input