更新 JSON 时 sed 参数列表太长

更新 JSON 时 sed 参数列表太长

我有一个 JSON 属性,需要使用 base64 进行更新。流程是:

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 字符串(单行)非常长。我还能如何在不使用 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

相关内容