我在一个文件(full_meta.json)中有一个json对象数组。
full_ meta.json:
[{"product_id":"xxx","name":"yyy","qty":111},{"product_id":"881","name":"aaa","qty":200}]
我想过滤它的一个子集,修改它并将其附加到一个文件(sub_meta. json)。
sub_ meta:json将包含一个空数组作为开始。我需要不断追加这样的值来填充它
sub_ meta.json:
[]
我正在使用以下命令:
1.过滤和修改id
d=$(jq '[.[] | select(.product_id == "881")] | map(.product_id ="881-new")' full_meta.json)
2.将其附加到另一个文件中
jq --argjson tmp "$d" '.+=$tmp' sub_meta.json
我得到了以下错误:
parse error: Invalid numeric literal at line 1, column 6
使用bash脚本实现这一点的最佳方法是什么?
1条答案
按热度按时间vjhs03f71#
假设你只想把修改后的元素添加到
sub_meta.json
中的数组中:您可以将full_meta.json
作为变量加载,根据需要修改它,读取sub_meta.json
作为输入,将修改内容附加到它,将结果写入临时文件,如果所有操作都成功,则用新的(临时)输出文件替换旧的sub_meta.json
文件。