使用jq删除JSON值中的重复项 [英] remove duplicates in JSON values using jq
本文介绍了使用jq删除JSON值中的重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下JSON:
[
{
"function": "ping",
"name": "start",
"servers": [
{
"load": 581.6875,
"last_heard": 2.379324197769165,
"version": "1.0",
"hidden": false,
"pid": "19735"
},
{
"load": 444.0625,
"last_heard": 1.3227169513702393,
"version": "1.0",
"hidden": false,
"pid": "12092"
}
]
},
{
"function": "pong",
"name": "middle",
"servers": [
{
"load": 581.6875,
"last_heard": 2.379324197769165,
"version": "2.0",
"hidden": false,
"pid": "19735"
},
{
"load": 444.0625,
"last_heard": 1.3227169513702393,
"version": "3.0",
"hidden": false,
"pid": "12092"
},
{
"load": 444.0625,
"last_heard": 1.3227169513702393,
"version": "3.0",
"hidden": false,
"pid": "12093"
}
]
},
{
"function": "pang",
"name": "end",
"servers": [
{
"load": 581.6875,
"last_heard": 2.379324197769165,
"version": "2.0",
"hidden": false,
"pid": "19735"
},
{
"load": 444.0625,
"last_heard": 1.3227169513702393,
"version": "2.0",
"hidden": false,
"pid": "12092"
}
]
}
]
(这只是一个示例,有数百个条目)
(it's just a sample, it's hundreds of entries)
我需要得到的
[{"name": "start", "version": ["1.0"]},
{"name": "middle", "version": ["2.0", "3.0"]},
{"name": "end", "version": ["2.0"]}]
因此,我需要删除无用的数据,然后获取带有版本"的唯一值的名称列表.
So I need to remove useless data and then get a list of names with their unique values for "version".
我可以一直到我拥有的地方
I can get until the point where I have
{
"name": "ping",
"version": [
"1.0",
"1.0"
]
}
{
"name": "pong",
"version": [
"2.0",
"3.0",
"3.0"
]
}
{
"name": "pang",
"version": [
"2.0",
"2.0"
]
}
使用
jq '.[] | {name: .function, version: [.servers[].version]}'
但是我需要摆脱重复的值. 可以使用jq吗?
But I need to get rid of the duplicated values. Is this possible using jq?
推荐答案
您快到了.只需将version
数组传递给unique
函数:
You were almost there. Just pipe the version
array to the unique
function:
jq '[.[]|{name, "version": [.servers[].version]|unique}]' input
这篇关于使用jq删除JSON值中的重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文