【发布时间】:2015-04-21 12:48:10
【问题描述】:
我想更新字典中的一个值,我只能通过字典中的另一个值来识别它。也就是说,给定这个输入:
[
{
"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 似乎缺少某种表达式选择器,相当于 xpath 中的 [@id='baz']。
(当我开始这个问题时,我有[.[] |...],然后我发现map,所以它并没有我想象的那么糟糕。)
【问题讨论】: