{ "amazon": {
"items": [
{
"name": "harry potter",
"state": "sold"
},
{
"name": "adidas shoes",
"state": "in inventory"
},
{
"name": "watch",
"state": "returned"
},
]
}
}
我想编写jq json解析工具,将“ name:harry potter”从“ sold”状态修改为“ returned”
我想在shell脚本(.sh)文件中对此进行修改。
答案 0 :(得分:1)
假设输入是有效的JSON,以下过滤器将根据指定的条件有条件地执行编辑:
.amazon.items
|= map(if .name == "harry potter" and .state == "sold"
then .state = "returned" else . end)
或者更确切地说,使用此过滤器调用jq将发出更新的JSON。
确定确实要执行此操作后,您可能希望使用sponge
覆盖原始文件。
答案 1 :(得分:1)
使用jq
函数的另一个select
过滤器:
jq '.amazon.items |= map(select(.name=="harry potter").state="returned")' file