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


28

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


ฉันต้องได้รับเพียงบรรทัดจาก textfile (wordlist, คั่นด้วยขึ้นบรรทัดใหม่) ที่มีช่วงความยาวต่ำสุดหรือเท่ากับ 3 อักขระ แต่ไม่เกินหรือเท่ากับ 10

ตัวอย่าง:

INPUT:

egyezményét
megkíván
ki
alma
kevesen
meghatározó

เอาท์พุท:

megkíván
alma
kevesen

คำถาม:ฉันจะทำสิ่งนี้ได้bashอย่างไร


9
grep -x '.\{3,10\}'
Costas

@Costas ที่ยอดเยี่ยมและเช่นเดียวกันไปสำหรับ sed เช่นกัน โพสต์คำตอบที่สมบูรณ์
orion

คำตอบ:


37
grep -x '.\{3,10\}'

ที่ไหน

  • -x รูปแบบการจับคู่กับทั้งบรรทัด
  • . สัญลักษณ์ใด ๆ
  • {3,10} ปริมาณจาก 3 ถึง 10 เท่าของสัญลักษณ์ก่อนหน้า (ในกรณีใด ๆ )

10

ใช้ egrep

egrep '^.{3,10}$'

การจับคู่ตั้งแต่ต้นจนจบบรรทัดสำหรับอักขระ 3 ตัวขึ้นไป แต่น้อยกว่าหรือเท่ากับ 10 อักขระ



0

การใช้awk:

awk 'length >= 3 && length <= 10' file

lengthคำสั่งจะกลับมาความยาวของ$0(ปัจจุบันบันทึก / บรรทัด) โดยค่าเริ่มต้นและนี้จะใช้รหัสเพื่อทดสอบสภาพอากาศความยาวสายที่อยู่ในช่วงที่กำหนด หากการทดสอบเช่นนี้ไม่มีบล็อกการดำเนินการที่สอดคล้องกันแสดงว่าการกระทำเริ่มต้นคือการพิมพ์บันทึก

การทดสอบข้อมูลที่กำหนด:

$ awk 'length >= 3 && length <= 10' file
megkíván
alma
kevesen

ในทำนองเดียวกันกับ Perl:

$ perl -lne '$l=length($_); print if ($l >= 3 && $l <= 10)' file
megkíván
alma
kevesen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.