sed 未终止的“s”命令

sed 未终止的“s”命令

我越来越:

sed: -e expression #1, char 46: unterminated `s' command

在此代码上:

sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf

我的编辑器显示 char 46 位于 .* 特殊字符之间。

我正在 centos 5 到 6.5 机器上工作。

更改分隔符没有帮助,也没有使用 " 代替 ',代码似乎可以在 linux mint 17.3 的终端上运行,减去 -c。我认为它可能会将 . 或 * 解释为不是特殊字符。

我试过 :

sed 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf

花了10分钟,但什么也没做,所以我停止了。适用于 Mint 17.3。

答案1

问题是我的编辑很愚蠢,我以为这是自动换行。

当我把

sed -i.bak -c 's|net.ipv4.ip_forward.*|net.ipv4.ip_forward = 1|' /etc/sysctl.conf

在编辑器中,“/etc/sysctl.conf”将接触窗口的边缘,因此它会在下一行显示其中的一部分。我以为这只是自动换行,但不是。 Centos 或 nano 决定,如果我上传文件或将代码复制到其中,则应将“/etc/sysctl.conf”放在新行中。我手动删除了新行,工作正常。

编辑:每当我使用 nano 并在文本接近窗口末尾时键入 / 时,它就会决定将其放在新行上,很奇怪。它的作用就像自动换行一样,但它只是破坏了一切。

我上传的地方不存在该新行。

呜呜呜呜呜呜呜

相关内容