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ก็ที่นี่)เพียงเท่าที่มีการจับคู่มากกว่าที่จะค้นหาแม้ว่าคำถามนี้จะทำ คุณไม่ควรปิดสิ่งนี้