sed busybox では検索と置換が機能しません。sed: unmatched '/' エラーが発生します

sed busybox では検索と置換が機能しません。sed: unmatched '/' エラーが発生します

特定の文字列を検索し、ファイル内のすべての出現箇所を置換しようとしています。

sed -i -e "s/$search_string/$replace_string/g" $filePath

BusyBox v1.35.0 でエラーが発生し続けますsed: unmatched '/'。ただし、ローカル システムでは同じことが正常に動作します。

そしていいえ、 も $search_stringにも は が$replace_string含まれていません/。念のため、あらゆる種類の区切り文字も試してみました。

答え1

この問題は、$replace_stringがスペースと改行を含むbase64エンコードされた文字列であったために発生していました。

replace_string=$(echo -n $json_string | base64)

上記のコマンドを次のように変更します

json_string=$(echo -n $json_string | base64 -w 0)

私にとっては解決しました

-w, --wrap=COLS エンコードされた行を COLS 文字の後に折り返します (デフォルトは 76)。行の折り返しを無効にするには 0 を使用します。

関連情報