ฉันต้องแทนที่(ด้วยอักขระบางตัวในไฟล์ของฉันและฉันไม่สามารถทำได้ \(ถูกนำมาใช้ในการจัดกลุ่มใน 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]มา