![sed が終了していない 's' コマンド [閉じる]](https://linux33.com/image/89331/sed%20%E3%81%8C%E7%B5%82%E4%BA%86%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%20's'%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
私は得る:
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
私のエディタは. *特殊文字の間に文字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を使用して/を入力するたびに、テキストがウィンドウの端の近くにあるときに新しい行に入れることにします。奇妙です。これは単語の改行のように機能しますが、すべての内容を破るだけです。
私がアップロードした場所に新しい行はありません。