ฉันจะ grep สำหรับบรรทัดที่มีอักขระไพพ์|หรือตัวอักษร>:
files content:
|this is test
where is >
this is none
ตอนนี้สิ่งที่ฉันต้องการใช้คำสั่ง grep คือ
grep -iE "<some expression>" file_name
เอาท์พุท:
|this is test
where is >
ฉันจะ grep สำหรับบรรทัดที่มีอักขระไพพ์|หรือตัวอักษร>:
files content:
|this is test
where is >
this is none
ตอนนี้สิ่งที่ฉันต้องการใช้คำสั่ง grep คือ
grep -iE "<some expression>" file_name
เอาท์พุท:
|this is test
where is >
คำตอบ:
ด้วยgrepไวยากรณ์มาตรฐาน:
grep '[>|]'
หรือ
grep -e '>' -e '|'
หรือ
grep '>
|'
หรือ
grep -E '>|\|'
หากคุณใช้ grep ของ GNU คุณสามารถทำได้ด้วยตัวดำเนินการหรือ ( |) ซึ่งควรหลีกเลี่ยง (นำหน้าด้วยแบ็กสแลช\) ดังนั้นหากต้องการค้นหาบรรทัดที่มีไพพ์หรือเครื่องหมายมากกว่ารวมอยู่ด้วยกับตัวดำเนินการหรือ :
grep '|\|>' infile
เอาท์พุท:
|this is test
where is >
+ , ?) เป็นน้ำตาลประโยคสำหรับและ\{1,\} \{0,1\}(ในทางกลับกัน EREs อ้างอิงย้อนกลับหลวม\(.\)\1) ( ซึ่งเป็นคุณสมบัติเฉพาะ BRE)
การใช้วงเล็บเหลี่ยมเพื่อจับคู่อักขระที่ต้องการ:
grep "[|>]" infile
เอาท์พุท:
|this is test
where is >
-iหรือ-Eที่นี่
วิธีที่ถูกต้องในการทำให้สำเร็จคือการใช้แฟล็ก -e ซึ่งระบุโดย POSIX เช่น:
grep -e '>\||' infile
grep -e '>' -e '|' infileทำงานเกินไป
-eระบุโดย POSIX แต่ไม่มีประโยชน์ที่นี่ \|ไม่ได้ระบุโดย POSIX
\|ไม่ใช่ตัวBREดำเนินการมาตรฐานแม้ว่าจะทำงานกับ GNUgrepซึ่งgrepพบในระบบปฏิบัติการส่วนใหญ่ที่สร้างขึ้นรอบ ๆ เคอร์เนล Linux