问题描述
我正在尝试将以下 JSON 转换为具有每个唯一“名称”和总数(即该名称出现的次数)的 csv。
当前数据:
[
{
"name": "test"
},{
"name": "hello"
},{
"name": "hello"
}
]
理想输出:
[
{
"name": "hello","count": 2
},{
"name": "test","count": 1
}
]
我已经尝试过 [.[] | group_by (.name)[] ]
,但出现以下错误:
jq: error (at :11): 不能用字符串“name”索引字符串
JQ 播放链接:https://jqplay.org/s/fWqNUii1b2
注意,我已经在使用 jq 将初始原始数据格式化为上述格式。请在此处查看 JQ 播放链接:https://jqplay.org/s/PwwRYscmBK
解决方法
group_by(.name)
| map({name: .[0].name,count: length})
[
{
"name": "hello","count": 2
},{
"name": "test","count": 1
}
]
Jq▷Play
基于 OP 的 comment,使用以下 jq 过滤器来计算多个对象中的每个名称,其中 .name
嵌套。
map(.labels)
| map({name: .[0].name,count: length})
,
echo '[{"name": "test"},{"name": "hello"},{"name": "hello"}]' | jq 'group_by (.name)[] | {name: .[0].name,count: length}' | jq -s
[
{
"name": "hello","count": 1
}
]