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