JSONを更新すると、sedパラメータのリストが長すぎます。

JSONを更新すると、sedパラメータのリストが長すぎます。

base64を使用して更新する必要があるJSON属性があります。プロセスは次のとおりです。

prop_val=`base64 --wrap=0 < $prop_txt`
sed -i 's@"property_specific": ""@"property_specific": "'"${prop_val}"'"@g' $final_json

問題が発生しました。line 22: /bin/sed: Argument list too long

Base64文字列(1行)は非常に長いです。 sedを使用せずにどのように属性を更新できますか?

注:形式は二重引用符です。

修正する:

  • 二重引用符の複雑さを排除するには、プレースホルダ固有の文字列を作成します。
  • 試してみましたがうまくsed -fいきませんでした。

試験を終えた:

     sed -i -f - $final_json << EOF; 's@placeHolder123456@'"${prop_val}"'@g'; EOF

間違い:

line 27: warning: here-document at line 23 delimited by end-of-file (wanted `EOF')
line 28: syntax error: unexpected end of file

EOFエラーを避けるために関数に入れようとしましたが、成功しませんでした。機能:

update_prop_specific() {
    sed -i -f - $1 << EOF
    s@placeHolder123456@$2@g
    EOF
}

提案?

ベストアンサー1

最終的に別のファイルを設定し、sed -i -f ....関数と明示的な呼び出しのために基本スクリプトからそのファイルを呼び出すと、unexpected EOF

おすすめ記事