ในกลุ่มฉันต้องการแทนที่เส้นทางที่ยาว/a/b/f/g/d/g
กับอีกอัน/s/g/w/d/g/r
ในไฟล์ข้อความ ปกติฉันจะใช้\/
แต่มีเครื่องหมายทับมากเกินไปที่นี่ มีวิธีที่ง่ายกว่านี้ไหม?
ในกลุ่มฉันต้องการแทนที่เส้นทางที่ยาว/a/b/f/g/d/g
กับอีกอัน/s/g/w/d/g/r
ในไฟล์ข้อความ ปกติฉันจะใช้\/
แต่มีเครื่องหมายทับมากเกินไปที่นี่ มีวิธีที่ง่ายกว่านี้ไหม?
คำตอบ:
คุณสามารถใช้อักขระอื่นแทนเครื่องหมายทับ/
เป็นตัวคั่นคำสั่งการแทนที่
ตัวอย่างการใช้#
:
:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#
บางทีคุณสามารถใช้ sed
ตัวอย่างที่ 1 - sed
@
คั่น: แทน/opt/omni/lbin
ไป/opt/tools/bin
เมื่อคุณใช้แทนชื่อเส้นทางหนึ่งซึ่งมี
/
คุณสามารถใช้เป็นตัวคั่นแทน@
/
ในตัวอย่าง sed ด้านล่างในบรรทัดสุดท้ายของแฟ้มใส่ก็เปลี่ยนไป/opt/omni/lbin
/opt/tools/bin
$ sed 's@/opt/omni/lbin@/opt/tools/bin@g' path.txt /usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/tools/bin:/opt/omni/sbin:/root/bin
จาก: http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/