3

我正在尝试在终端中使用 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

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

谢谢你的帮助

4

2 回答 2

9

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

sed -i s#expr1#expr2#

所以,它可能是:

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

此外,由于您的替换参数本身包含空格,因此您需要将它们括在单引号中。

于 2013-04-22T04:11:04.577 回答
4

/在 中用作分隔符不是强制性的sedsed 's/hi/hey/sed 's#hi#hey#'

于 2013-04-22T04:13:18.247 回答