Sed
在查找和替換字元串中查找並替換為帶有斜線的 sed
我想
/var/www
用/home/lokesh/www
命令sed
更改文件sed -i 's///var//www///home//lokesh//www/g' lks.php
但這會出錯
sed: couldn't open file ww///home//lokesh//www/g: No such file or directory
不確定您是否知道,但
sed
有一個很棒的功能,您不需要使用 a/
作為分隔符。所以,你的例子可以寫成:
sed -i 's#/var/www#/home/lokesh/www#g' lks.php
它不需要是一個
#
,它可以是任何單個字元。例如,使用 a3
作為分隔符:echo "foo" | sed 's3foo3bar3g' bar
正如其他人指出的那樣,您可以為分隔符使用不同的字元,如下所示:
sed -i 's!pattern!replacement!g' /path/to/file
但是,如果沒有方便的字元來代替
/
分隔符,您還可以通過在每個字元前加上反斜杠來轉義任何嵌入的pattern
分隔replacement
符\
。這是一個使用替換/
為分隔符的範例:/some/path``../some/replacement
sed -i 's/\/some\/path/..\/some\/replacement/g'
但是,人類更難閱讀,所以一般來說,如果可能的話,最好使用不同的字元作為分隔符,如下所示:
sed -i 's!/some/path!../some/replacement!g'