我试图合并这些对象(最好是追加来自公共x值的数组),但没有任何运气。我知道这是一个noop,但它是最接近我认为我想要的,不会出错的东西:
jq -n -rSC 'def data: {"a": {"x": "t", "y": ["a","b"]}, "b": {"x": "t", "y": ["c","d"]}, "c": {"x": "r", "y": ["a","c"]}}; data | .[] | reduce . as $item ({}; . + $item)'
{
"x": "t",
"y": [
"a",
"b"
]
}
{
"x": "t",
"y": [
"c",
"d"
]
}
{
"x": "r",
"y": [
"a",
"c"
]
}
字符串
预期产出将是:
{
"x": "t",
"y": [
[
"a",
"b”
],
[
"c",
"d"
]
]
}
{
"x": "r",
"y": [
[
"a",
"c"
]
]
}
型
这是示例代码。我真正喜欢的是这样的合并:
gcloud compute snapshots list --project "foo" --format=json | jq -rSC '.[] | select((.sourceDisk | test("data-disk$")) and (.autoCreated | true)) | {(.sourceDisk | match("/([^/]+$)").captures[0].string): [.diskSizeGb, .name, .creationTimestamp]}'
型
我对gcloud命令的任何输出都很在行,它允许我在一个对象下拥有一个示例的快照数据。但我希望它与我的示例数据非常相似。
我试过简单的add,上面的reduces,map/map_value
1条答案
按热度按时间hmae6n7t1#
如果您知道
x
和y
的实际名称,则可以使用以下reduce
直接寻址它们(设置.x
并追加到.y
):个字符
Demo
或者使用一种更函数化的方法,
group_by
公共字段:的字符串
Demo的