现在我有一个JSONJQ指定默认值某些情况
[
{
"city": "SH",
"age": 0,
"count": 1
},
{
"city": "SH",
"age": 20,
"count": 1
},
{
"city": "SH",
"age": 40,
"count": 1
},
{
"city": "BJ",
"age": 20,
"count": 2
},
{
"city": "BJ",
"age": 30,
"count": 1
}
]
现在,我想每一个时代的一些数据可视化的目的计数阵列(见demo)。 e.g
# age data: [shCount, bjCount]
age: 0, data:[1, 0]
age: 20, data: [1, 2]
age: 30, data: [0, 1]
age: 40, data: [1, 0]
如果城市没有年龄,给出一个默认值0。但是,如果城市没有年龄,就没有相关的JSON对象。
,所以我不能只是使用下面壳获得计数每一个时代的阵列,e.g
# without BJ value
➜ ~ jq -c '.[] | select(.age==0) | [.city, .count]' foo.json
["SH",1]
➜ ~ jq -c '.[] | select(.age==20) | [.city, .count]' foo.json
["SH",1]
["BJ",2]
所以,如果年龄为0,如何指定的0至BJ
默认值?
谢谢,但我不能得到你的结果,但与错误消息:'jq:错误(在):不能迭代null(null)'。另外那里有很多城市呢? –
zhuguowei
您可能想要在不带-n选项的情况下调用jq。我已经相应地更新了答案。至于处理多个城市,我增加了另一个答案。 – peak