"|" ยังต้องการแบ็กสแลชเพื่อให้ได้ความหมายพิเศษ
echo "blia blib bou blf" | sed 's/bl\(ia\|f\)//g'
จะทำในสิ่งที่คุณต้องการ
อย่างที่คุณทราบหากทุกอย่างล้มเหลวอ่านคู่มือ :-)
คู่มือผู้ใช้ GNU sedส่วนที่3.3 ภาพรวมของไวยากรณ์นิพจน์ปกติ :
`REGEXP1 \ | REGEXP2'
จับคู่อย่างใดอย่างหนึ่ง REGEXP1 หรือ REGEXP2
หมายเหตุแบ็กสแลช ...
น่าเสียดายที่ไวยากรณ์ของ regex ไม่ได้มาตรฐานจริง ๆ ... มีหลายรูปแบบซึ่งแตกต่างจากสิ่งอื่น ๆ ที่ "อักขระพิเศษ" ต้องการ \ และที่ไม่ได้ ในบางตัวมันสามารถกำหนดค่าได้หรือขึ้นอยู่กับสวิทช์ (เช่นเดียวกับใน GNU grep
ซึ่งคุณสามารถสลับระหว่างภาษาถิ่น regex ที่แตกต่างกันสามแบบ)
คำตอบโดยเฉพาะอย่างยิ่งนี้สำหรับsed GNU มีsed
ตัวแปรอื่น ๆเช่นชุดที่ใช้ใน BSD ซึ่งทำงานแตกต่างกัน