jq合并对象内的数组

时间:2018-05-28 15:02:33

标签: bash jq

我有两个对象

{
    "a": [
        "1-1",
        "1-2"
    ],
    ...
}

{ 
    "a": [
        "2-1",
        "2-2",
        "2-3"
    ],
    ...
}

这两个对象中还有其他键,但我并不关心它们。

我想要的是"a"的元素将被连接起来的对象:

{
    "a": [
        "1-1",
        "1-2",
        "2-1",
        "2-2",
        "2-3"
    ],
    ...
}

其他密钥可以替换/合并/无关紧要。

如何使用jq

执行此操作

1 个答案:

答案 0 :(得分:1)

一种方法是使用-s命令行选项:

jq -s '.[1].a as $a1 | .[0] | (.a += $a1)'

由于您不关心非a键,因此可以选择:

jq -n '{a: (input.a + input.a)}' 

请注意上面一行中的-n选项。