grep
รหัสที่ง่ายที่สุดที่จะทำงาน:
grep -xE '([^,]*,){10}[^,]*'
คำอธิบาย:
-x
ตรวจสอบให้แน่ใจว่ารูปแบบต้องตรงกับทั้งบรรทัดแทนที่จะเป็นเพียงส่วนหนึ่งของมัน นี่เป็นสิ่งสำคัญดังนั้นคุณจึงไม่ตรงกับบรรทัดที่มีเครื่องหมายจุลภาคมากกว่า 10 รายการ
-E
หมายถึง "Extended regex" ซึ่งทำให้แบ็กสแลชลดการหลบหลีกใน regex ของคุณน้อยลง
วงเล็บถูกใช้สำหรับการจัดกลุ่มและ{10}
หลังจากนั้นหมายความว่าจะต้องมีสิบตรงกันในแถวของรูปแบบภายใน parantheses
[^,]
เป็นคลาสอักขระ - ตัวอย่างเช่น[c-f]
จะจับคู่อักขระเดี่ยวใด ๆ ที่เป็นc
, a d
, e
หรือหรือf
และ[^A-Z]
จะจับคู่อักขระเดี่ยวใด ๆ ที่ไม่ใช่ตัวอักษรตัวพิมพ์ใหญ่ ดังนั้น[^,]
จับคู่อักขระเดี่ยวใด ๆ ยกเว้นเครื่องหมายจุลภาค
*
หลังจากที่หมายถึงตัวละครคลาส "ศูนย์หรือมากกว่าของเหล่านี้."
ดังนั้นส่วน regex ([^,]*,)
หมายถึง "อักขระใด ๆ ยกเว้นเครื่องหมายจุลภาคจำนวนครั้งใด ๆ (รวมถึงศูนย์ครั้ง) ตามด้วยเครื่องหมายจุลภาค" และ{10}
ระบุ 10 ของเหล่านี้ จากนั้น[^,]*
ให้จับคู่ส่วนที่เหลือของอักขระที่ไม่ใช่จุลภาคกับส่วนท้ายของบรรทัด
sed
ก็ที่นี่)เพียงเท่าที่มีการจับคู่มากกว่าที่จะค้นหาแม้ว่าคำถามนี้จะทำ คุณไม่ควรปิดสิ่งนี้