การแสดงออกปกติมาในรสชาติที่แตกต่างมากมาย สิ่งที่คุณแสดงคือนิพจน์ทั่วไปที่เหมือน Perl (PCRE, "Perl Compatible Regular Expression")
grep
นิพจน์ปกติ POSIX ใด เหล่านี้คือนิพจน์ทั่วไปพื้นฐาน (BRE) และนิพจน์ทั่วไปเพิ่มเติม (ERE หากgrep
ใช้กับ -E
ตัวเลือก) ดูคู่มือสำหรับre_format
หรือregex
หรือคู่มือที่คล้ายกันของคุณgrep
อ้างอิงในระบบของคุณหรือข้อความมาตรฐาน POSIX ที่ฉันเพิ่งเชื่อมโยง
หากคุณใช้ GNU grep
คุณจะสามารถใช้นิพจน์ทั่วไปที่เหมือน Perl ได้หากคุณใช้grep
กับตัวเลือกที่grep
เจาะจงของGNU-P
โปรดทราบว่าการgrep
ส่งคืนบรรทัดเป็นค่าเริ่มต้นไม่ใช่สตริงย่อยจากบรรทัด อีกครั้งด้วย GNU grep
(และgrep
การใช้งานอื่น ๆ) คุณอาจใช้-o
ตัวเลือกเพื่อรับบิตที่ตรงกับนิพจน์ที่ระบุจากแต่ละบรรทัด
โปรดทราบว่าทั้งสอง-P
และ-o
ส่วนขยายที่ไม่ได้มาตรฐานสเปคของ POSIXgrep
หากคุณไม่ได้ใช้ GNU grep
คุณอาจใช้sed
แทนการรับบิตระหว่างสตริงprefix
และจุดสิ้นสุดของบรรทัด:
sed -n 's/.*prefix\(.*\)/\1/p' file
สิ่งนี้ทำเพื่อพิมพ์เฉพาะบรรทัดที่sed
จัดการเพื่อใช้การทดแทนที่กำหนดให้ การเปลี่ยนตัวผู้เล่นจะเข้ามาแทนที่สายทั้งที่ตรงกับการแสดงออก (ซึ่งเป็น BRE) prefix
กับชิ้นส่วนของมันที่เกิดขึ้นหลังจากสตริง
โปรดทราบว่าหากมีหลายอินสแตนซ์ของprefix
หนึ่งบรรทัดการsed
แปรผันจะคืนค่าสตริงหลังอันสุดท้ายในขณะที่การgrep
เปลี่ยนแปลงของGNU จะคืนค่าสตริงหลังจากอันแรก (ซึ่งจะรวมถึงอินสแตนซ์อื่นของprefix
)
การsed
แก้ปัญหาจะเป็นแบบพกพาไปยังระบบเหมือน Unix ทั้งหมด