sed + リモートシステムから文字列を削除する

sed + リモートシステムから文字列を削除する

私のsed構文にどのような問題があるかを提案してください。

ssh [email protected] sed -i '/archive_command/ s/#BARMAN#[ ]*//g'  /var/lib/pgsql/data/postgresql.conf"

sed: -e expression #1, char 17: missing command

私の目標は、リモートコンピュータから#BARMAN#文字列を削除することです。

私のローカルコンピュータでこれを行うと、次のように動作します。

sed -i '/archive_command/ s/#BARMAN#[ ]*//g'  /var/lib/pgsql/data/postgresql.conf"

答え1

文法エラー。

次のようにする必要があります。

ssh postgres@host 'sed -i "/archive_command/ s/#BARMAN#[ ]*//g"  /var/lib/pgsql/data/postgresql.conf"'

コマンドの周りに引用符を忘れました。エスケープする必要がないように、単一引用符の代わりに二重引用符を追加しました。

関連情報