Sed

在查找和替換字元串中查找並替換為帶有斜線的 sed

  • June 9, 2021

我想/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'

引用自:https://unix.stackexchange.com/questions/378990