SED:连字符处未终止的“s”命令

SED: unterminated `s' command at hyphen

我的供应商运行以下

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 - 这是那个位置的连字符 (-)。我试过转义它 (\-) 无济于事。

有什么想法吗?

你的线路:

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

sed 需要 s/.../.../g 您已经转义了 g 标志之前的最后一个 /,不仅如此,您还转义了 g 标志。至少这个错误不会让你的 sed 命令消失。

更好的是,如果您的 pattern/replacement 也包含 /(slash),您可以选择另一个分隔符。它可以节省那几十个反斜杠:

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