我想更新dict中的值,我只能通过dict中的另一个值来识别。也就是说,鉴于此输入:
[
{
"format": "geojson",
"id": "foo"
},
{
"format": "geojson",
"id": "bar"
},
{
"format": "zip",
"id": "baz"
}
]
我想改变 baz
'csv'的伴随格式:
[
{
"format": "geojson",
"id": "foo"
},
{
"format": "geojson",
"id": "bar"
},
{
"format": "csv",
"id": "baz"
}
]
我发现这有效:
jq 'map(if .id=="baz" then .format="csv" else . end)' my.json
但这看起来相当冗长,所以我想知道是否有一种更优雅的方式来表达这一点。 jq似乎缺少某种表达式选择器,相当于可能 [@id='baz']
在xpath中。
(当我开始这个问题时,我有 [.[] |...]
然后我发现了 map
,所以它并没有我想象的那么糟糕。)