ฉันต้องแทนที่(
ด้วยอักขระบางตัวในไฟล์ของฉันและฉันไม่สามารถทำได้ \(
ถูกนำมาใช้ในการจัดกลุ่มใน sed และเมื่อฉันใช้\\(
กับ sed มันได้รับการรักษาเป็นตัวละครที่ไม่ได้เป็นเพียงแค่\(
(
ดูเหมือนเป็นเรื่องยากสำหรับฉัน
ฉันต้องแทนที่(
ด้วยอักขระบางตัวในไฟล์ของฉันและฉันไม่สามารถทำได้ \(
ถูกนำมาใช้ในการจัดกลุ่มใน sed และเมื่อฉันใช้\\(
กับ sed มันได้รับการรักษาเป็นตัวละครที่ไม่ได้เป็นเพียงแค่\(
(
ดูเหมือนเป็นเรื่องยากสำหรับฉัน
คำตอบ:
หากคุณใช้ sed โดยไม่มี -r
(การแสดงผลปกติแบบขยาย) จะทำงานตามที่ใช้\(\)
แทน()
การจัดกลุ่ม:
sed -e 's/(/X/g'
ตัวอย่างเช่น
$ echo "foo (bar) (baz)" | sed -e 's/(/X/g'
foo Xbar) Xbaz)
หากคุณต้องการใช้-r
คุณสามารถใส่(
ข้างใน[]
เช่น
sed -re 's/[(]/X/g'
ตามที่คำพูดของ Lekensteynใช้tr
อาจเหมาะสมกว่าในขณะที่คุณกำลังแทนที่และคุณไม่ต้องการพลังเต็มที่ของการแสดงออกปกติ
grep -lRZ " split(" . | xargs -0 sed -i -e 's/ split(/ explode(/g'
tr
(anslate)echo 'Hello (world)' | tr '()' '[]'
; มันออกHello [world]
มา