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 並在文字接近視窗末尾時鍵入 / 時,它就會決定將其放在新行上,這很奇怪。它的作用就像自動換行一樣,但它只是破壞了一切。

我上傳的地方不存在該新行。

嗚嗚嗚

相關內容