ฉันจะ 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