sed が「不明なコマンド」を報告します

sed が「不明なコマンド」を報告します

私はこう書きました:

sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini

これにより、次のエラーが発生しました:

sed: -e expression #1, char 1: unknown command: `'

答え1

比較する

 sudo sed -i ‘s/3389/3390/g’ /etc/xrdp/xrdp.ini

正しい

 sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini

さまざまな種類の引用を確認してください。

Writer や Word などのドキュメント エディターからコピー アンド ペーストする場合は注意してください。これらのエディターでは、引用符 (およびその他の要素) がローカルに合わせて自動的に変更されることがよくあります。

答え2

私も同じエラーに遭遇しましたが、原因は異なっていました。` 文字は使用せず、どこかからコードをコピーして貼り付けることもしませんでした。条件付きの sed スクリプトを書いていて、コマンドに新しい行を使用しました。他の誰かが同じ問題を抱えていて、受け入れられた回答で解決できなかった場合に備えて、ここに投稿します。

エラーを再現する方法は次のとおりです。

echo class:myclass > myfile
cat script
/class:/
s/myclass/MYCLASS/g #ctrl+d to exit
sed -f script myfile

出力:

sed: file script line 2: unknown command: `
'

これを修正するには、コマンドを条件の後(同じ行)に配置するか、中括弧を使用して、スクリプトを次のようになります。

/class:/ s/myclass/MYCLASS/

あるいはこれ:

/class:/ {
s/myclass/MYCLASS/
}

関連情報