[Computer]$ grep "foo|bar" filename
ฉันเข้าใจว่าคำสั่งดังกล่าวควรกลับแต่ละบรรทัดในชื่อไฟล์ที่มี "foo" หรือ "bar" ออก หน้าคนยืนยัน | ในฐานะ Regex หรือสัญลักษณ์และรหัสใช้งานได้กับ "foo" และ "bar" โดยอิสระ ฉันกำลังคิดถึงอะไร
[Computer]$ grep "foo|bar" filename
ฉันเข้าใจว่าคำสั่งดังกล่าวควรกลับแต่ละบรรทัดในชื่อไฟล์ที่มี "foo" หรือ "bar" ออก หน้าคนยืนยัน | ในฐานะ Regex หรือสัญลักษณ์และรหัสใช้งานได้กับ "foo" และ "bar" โดยอิสระ ฉันกำลังคิดถึงอะไร
คำตอบ:
grep ใช้นิพจน์ปกติพื้นฐาน (BRE) เป็นค่าเริ่มต้น จากหน้าคน:
Basic vs Extended Regular Expressions: ในนิพจน์ทั่วไปพื้นฐานเมตาอักขระ, +, {, |, (และ) สูญเสียความหมายพิเศษ ใช้แบ็กสแลชเวอร์ชัน \ ?, +, {, \ |, (และ) แทน
ดังนั้นคุณต้องหนีจาก|
:
grep "foo\|bar" filename
หรือเปิดการแสดงผลปกติเพิ่มเติม:
grep -E "foo|bar" filename
egrep
(นามแฝงสำหรับgrep -E
) grep
แทน