Arrays 组合来自对象流的数组
我正在努力处理这个稍微复杂一点的json结构:Arrays 组合来自对象流的数组,arrays,json,jq,Arrays,Json,Jq,我正在努力处理这个稍微复杂一点的json结构: { "name": "item1", "path": {"mapping": [ {"position": {"node_id": "1"}, "rank": "1"}, {"position": {"node_id": "2"}, "rank": "2"}, {"position": {"node_id": "3"}, "rank": "3"}, {"po
{
"name": "item1",
"path":
{"mapping":
[
{"position": {"node_id": "1"}, "rank": "1"},
{"position": {"node_id": "2"}, "rank": "2"},
{"position": {"node_id": "3"}, "rank": "3"},
{"position": {"node_id": "6"}, "rank": "4"}
]
}
}
{
"name": "item2",
"path":
{"mapping":
[
{"position": {"node_id": "1"}, "rank": "1"},
{"position": {"node_id": "5"}, "rank": "2"},
{"position": {"node_id": "3"}, "rank": "3"},
{"position": {"node_id": "4"}, "rank": "4"}
]
}
}
我想要的只是唯一的“node_ID”条目,我不在乎它们属于哪个对象。使用[.path.mapping[].position.node\u id]
我可以为每个对象获得一个数组,但我找不到任何关于如何组合这些对象以在其上使用unique
的示例
期望输出为:
1
2
3
4
5
6
实现这一点的最佳方法是什么?使用
-n
/--null input
选项,您可以通过关键字inputs
获取输入,并用其中的值构造单个数组。例如:
$ jq -nr '[inputs.path.mapping[].position.node_id] | unique[]' file
1
2
3
4
5
6