我有一个 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