如何使用jq合并来自多个文件的JSON记录

时间:2020-03-17 10:02:28

标签: json jq

我有一个文件名列表作为shell变量,其内容如下所示

file_names=('one.json' 'two.json')

one.json:

{
      "key":"k1",
      "host": "..",
      "name": ".."    
}

two.json:

{
      "key":"k2",
      "host": "..",
      "name": ".."
}

我想创建一个合并文件,其中包含上述文件中的所有内容。可以有2个以上的文件。在合并文件中,key值将成为JSON记录的外层键。例如:

{
    "k1": {
      "host": "..",
      "name": ".."   
    },
    "k2": {
      "host": "..",
      "name": ".."   
    }
}

如何使用jq实现此目的?

1 个答案:

答案 0 :(得分:2)

使用INDEX

jq -n 'INDEX(inputs; .key) | map_values(del(.key))' "${file_names[@]}"