忽略sed find和replace命令中的斜杠

gcu*_*bed 3 bash sed

我正在尝试使用终端中的sed进行查找和替换.

在apache配置文件中,我正在尝试替换:

DocumentRoot /var/www

DocumentRoot /var/www/mysite.com/public_html

从命令行,不使用编辑器.我想用sed做这个,我尝试了各种迭代:

sudo sed -i 's/'DocumentRoot /var/www'/'DocumentRoot /var/www/mysite.com/public_html'/' /etc/apache2/sites-available/mysite.com

但是,这样做时我收到此错误: sed: -e expression #1, char 14: unterminated s command

所以它在路径中的斜线上出错了.我该如何解决这个问题?

谢谢你的帮助

Ani*_*han 9

没有必要使用/正则表达式分隔符.您可以使用#@当您的正则表达式包含/您需要转义时.

sed -i s#expr1#expr2#
Run Code Online (Sandbox Code Playgroud)

所以,它可能是:

sudo sed -i 's#DocumentRoot /var/www#DocumentRoot /var/www/mysite.com/public_html#' /etc/apache2/sites-available/mysite.com
Run Code Online (Sandbox Code Playgroud)

此外,由于您的substitution-argument本身包含空格,您需要将它们用单引号括起来.