如何使用jq合并两个json文件

时间:2019-11-28 14:24:06

标签: json file merge jq

我的目录充满了具有以下结构的json文件 例如:file1

{
    "products": [
        {"f1": "v1"},
        {"f1": "v2"}
    ]
}

file2:

{
    "products": [
        {"f1": "v3"},
        {"f1": "v4"}
    ]
}

“。products”的内容与示例中的内容不同,但是我们可以假定它们是格式正确的更复杂的json值。

我想产生一个具有以下结构的文件:

[
    {"f1": "v1"},
    {"f1": "v2"},
    {"f1": "v3"},
    {"f1": "v4"}
]

关于如何使用jq执行此操作的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

jq --slurp 'map(.products[])' /path/to/dir/*.json

其中/path/to/dir/*.json应该是文件列表,或者是bash glob,它将扩展到您要使用的JSON文件列表中。例如,对于当前目录中的两个文件file1file2,您可以使用file{1,2},也可以使用file1 file2,这就是先前的glob将被扩展到的文件。

--slurp标志告诉jq读取数组中的所有输入,而不是分别处理它们。然后,我们将此数组的每个对象(文件的原始内容)映射到它们的乘积序列中。