我越来越:
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 并在文本接近窗口末尾时键入 / 时,它就会决定将其放在新行上,很奇怪。它的作用就像自动换行一样,但它只是破坏了一切。
我上传的地方不存在该新行。