sedが「char 53:終了していない「s」コマンド」を出力する理由


28

なぜこのbashスクリプト

ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF

出力->

sed: -e expression #1, char 53: unterminated `s' command

回答:


38

sコマンドsedは、特定の構文を使用します。

s/AAAA/BBBB/options

where sは置換コマンド、置換AAAAする正規表現、置換対象の正規表現BBBB、およびoptionsグローバル(g)や大文字と小文字を区別しない()などの置換コマンドのオプションのいずれかですi

あなたの特定のケースでは、最後のスラッシュが欠落していましたが/、それを追加するとsedうまく動作します:

➜  ~  sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME

info sed 'The "s" Command' sコマンドの完全な説明と使用法が含まれています。


9

/最後に行方不明。

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

1
/not が欠落していましたがg、これgはグローバル向けであり、望ましくない可能性があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.