คำตอบส่วนใหญ่ที่นี่ตรงกับเนื้อหาของบรรทัดที่จะนับโดยใช้นิพจน์ทั่วไปที่ฝังอยู่ในโปรแกรม Awk หากคุณต้องการจับคู่บรรทัดที่มีเนื้อหาที่อาจมีอักขระพิเศษ (กับ Awk หรือนิพจน์ทั่วไป) จะเป็นการดีกว่าถ้าจะเปรียบเทียบสตริงเพื่อความเท่าเทียมกัน ดังนั้นฉันจึงเสนอสคริปต์ Awk ต่อไปนี้เป็นคำตอบที่แตกต่างของmuru :
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