sed エラー置換文字列

sed エラー置換文字列

こんにちは。文字列を置き換える必要がありますが、「return false;」という文字列を使用するとエラーが発生します。

#!bin/bash
oldstring='{alert("bash")}'
newstring='{return false;}'
grep -rl $oldstring /home/commons.bundle.js | xargs sed -i s/$oldstring/$newstring/g

エラー: sh deleteBoo.sh sed: espressione -e #1, carattere 25: comando `s' 非終了者

答え1

grep -rlZF -- "$oldstring" /home/commons.bundle.js |
xargs -r0 sed -i "s/$oldstring/$newstring/g" -- 

以下の小さな変更を適用すると機能します。

  • -Fgrepが渡された文字列を正規表現として評価しないように、grepを使用する必要があります。
  • 使用するもう1つのgrepオプションは、-Znull区切り文字を使用してファイル名をxargsに渡すことです。
  • 受信側では、-0xargsを使用してファイル名を安全に解凍できるようになりました。 「法律」によっては、ファイル名にヌル値を含めることはできません。

関連情報