我想在文件改变/var/www与/home/lokesh/www使用sed命令
sed -i 's///var//www///home//lokesh//www/g' lks.php
Run Code Online (Sandbox Code Playgroud)
但这给错误
sed: couldn't open file ww///home//lokesh//www/g: No such file or directory
Run Code Online (Sandbox Code Playgroud)
Tig*_*ger 38
不确定您是否知道,但sed有一个很棒的功能,您无需使用 a/作为分隔符。
所以,你的例子可以写成:
sed -i 's#/var/www#/home/lokesh/www#g' lks.php
Run Code Online (Sandbox Code Playgroud)
它不需要是 a #,它可以是任何单个字符。例如,使用 a3作为分隔符:
echo "foo" | sed 's3foo3bar3g'
bar
Run Code Online (Sandbox Code Playgroud)
正如其他人指出的那样,您可以为分隔符使用不同的字符,如下所示:
sed -i 's!pattern!replacement!g' /path/to/file
Run Code Online (Sandbox Code Playgroud)
但是,如果没有方便的字符来代替/分隔符,您也可以转义任何嵌入的分隔符,pattern并replacement在每个字符前加上反斜杠\。这是一个/用作分隔符的示例,它替换/some/path为../some/replacement:
sed -i 's/\/some\/path/..\/some\/replacement/g'
Run Code Online (Sandbox Code Playgroud)
但是,人类更难阅读,因此通常如果可能的话,最好为分隔符使用不同的字符,如下所示:
sed -i 's!/some/path!../some/replacement!g'
Run Code Online (Sandbox Code Playgroud)