sedを使用してテキストを置き換えることはできません

sedを使用してテキストを置き換えることはできません

私はスクリプトを書いていますが、その中にはファイルのいくつかのパラメータを置き換える作業が含まれています。

パラメータを見つけて変更しようとしていますが、sedをデバッグする必要があります。

sed -i "s/"$DEFAULT_MAIL_DOMAIN = "padl.com";"/"$DEFAULT_MAIL_DOMAIN = "$E_DOMAIN";"/g" /usr/share/migrationtools/migrate_common.ph

ターゲットファイル:

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "padl.com";

# Default base 
$DEFAULT_BASE = "dc=padl,dc=com"

スクリプト:

echo "Enter the email domain"
read E_DOMAIN
echo "The email domain will be "$E_DOMAIN".com"
sleep 2
E_DOMAIN_VAR=$E_DOMAIN.com
sed -i "s/"$DEFAULT_MAIL_DOMAIN = "padl.com";"/"$DEFAULT_MAIL_DOMAIN = "$E_DOMAIN";"/g" /usr/share/migrationtools/migrate_common.ph

ベストアンサー1

私は次のようなことをお勧めします。

sed -i 's|$DEFAULT_MAIL_DOMAIN = \"padl.com\";|$DEFAULT_MAIL_DOMAIN = \"$E_DOMAIN\";|' /usr/share/migrationtools/migrate_common.ph

私が変更したもの:

  • sedに変更し、周囲の一重引用符を置き換えます。すべての二重引用符は間違いなく問題を引き起こす可能性があります。
  • sed代替構文がから変更されました/|この部分は必須ではありません。私はそれが良いです。/必要に応じて保管できます。
  • 次に、検索の周りの二重引用符を削除してテキストを置き換えました。必要ありません。
  • ファイルテキストに実際に存在する二重引用符はエスケープされます。
  • sed 置換が終了すると、グローバルフラグが削除されました。これは、1行に1回だけ発生する(おそらくファイルごとに1回)設定ファイルのパラメータのように見えます。

おすすめ記事