SED:在连字符处未命令的's'命令

时间:2016-03-02 09:30:46

标签: sed provisioning

我在我的配置程序中运行以下内容

sed -i 's/DocumentRoot \/var\/www\/DocumentRoot \/var\/www\/app\/web-root\/\g' /etc/apache2/sites-available/000-default.conf

然而我收到错误:sed: -e expression #1, char 69: unterminated 's' command - 这是该位置的连字符( - )。我试过逃避它(\-)无济于事。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的行:

sed -i 's/DocumentRoot \/var\/www\/DocumentRoot \/var\/www\/app\/web-root\/\g ...
                                                                          ^

sed需要s/.../.../g您已经在/标记之前的最后一个g进行了转义,此外,您还转发了g标记。至少这个错误不会让你的sed命令失效。

如果您的模式/替换包含/(slash),那么更好的是,您选择另一个分隔符。它可以保存那些数十条反斜杠:

sed -i 's#foo/bar/blah#foo1/bar1/blah1#g` file
相关问题