วิธีการ“ grep” สำหรับความยาวบรรทัด * ไม่ใช่ * ในช่วงที่กำหนด


17

หมายเหตุ:คำถามนี้เป็นส่วนเติมเต็มของคำถาม & คำตอบนี้: "grep" สำหรับความยาวบรรทัดในช่วงที่กำหนดได้อย่างไร


เราจะ grep สำหรับบรรทัดที่มีน้อยกว่า 8 หรือมากกว่า 63 ตัวอักษรได้อย่างไรไม่มีที่มีมากกว่าแปดและน้อยกว่า 63 ตัว?

ดังนั้นการนับจำนวนอักขระที่ยอมรับได้อาจเป็น ...

7 6 5 4 3 2 1 0

...และ...

64 65 66 67 ...

3
ฉันรู้ว่าคุณขอgrepแต่คุณอาจพิจารณาawkโดยเฉพาะหากคุณต้องการการประมวลผลเพิ่มเติมและอื่น ๆ (ยืดหยุ่นมากและอ่านได้ ): awk '( length($0)<8 ) || ( length($0)>63 )' #default action ของเงื่อนไขคือพิมพ์บรรทัดที่ตรงกับเงื่อนไข หรือด้วยการประมวลผลที่น้อยกว่าใน $ 0:awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
Olivier Dulac

@mikeserv - ใช่ในการดูอีกครั้งมันอาจจะสมเหตุสมผลมากกว่าที่จะเข้าใกล้คำถามและคำตอบอื่น ๆ
slm

@ mikeserv - มันเป็นความเจ็บปวดโดยทั่วไปฉันต้องรวมคำตอบให้เป็นหนึ่งใน Q แล้วพวกเขาก็จะถูกลบออกจากต้นฉบับ นี่คือแนวทางในการทำ: "คำถามควรถูกรวมเข้าด้วยกันเมื่อพวกเขาเหมือนกัน 99% และมันจะเป็นประโยชน์ที่จะมีคำตอบทั้งหมดจากคำถามที่ซ้ำกันหลายแห่งในที่เดียวซึ่งจะเป็นการลบคำตอบย้ายคำถามเหล่านั้นไปยังคำถามเป้าหมาย คำถามปัจจุบันเป็น stub ที่มีลิงก์ไปยังเป้าหมายผสาน "
slm

เกิดอะไรขึ้นกับความคิดเห็นของฉัน
Dmitry Grigoryev

@DmitryGrigoryev - เดาว่ามีคนไม่ชอบ เอามันจากคนที่เคยอยู่ที่นั่น - ลืมมันไปเถอะ
mikeserv

คำตอบ:


38
grep -xv '.\{8,63\}' <input >output

grepของ-xสวิทช์หมายถึงสายทั้งการแข่งขัน - ซึ่งเป็นที่จะบอกว่ารูปแบบใด ๆ ที่ตรงกับการต้องกำหนดเส้นจากหัวถึงหาง ทำ ...

grep -x pattern

... โดยทั่วไปเทียบเท่ากับ ...

grep ^pattern$

grepของ-vสวิทช์ขัดแย้งอิทธิพลรูปแบบของบนเส้นเลือก โดยทั่วไปกำลังทำ ...

grep pattern

... จะเลือกเฉพาะเส้นที่ตรงกับรูปแบบ แต่จะมีการเลือก-vรูปแบบที่คัดค้านเท่านั้นที่จะเลือกบรรทัดที่ไม่ตรง

... และอื่น ๆ ...

grep -xv '.\{8,63\}'

... จับคู่ทุกบรรทัดที่มีตั้งแต่หัวจรดท้ายที่ใดก็ได้ระหว่าง 8 ถึง 63 ตัวอักษรและการ-vเลือกเมื่อตะกี้จะทำให้grepพิมพ์ทุกอย่างอื่นเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.