如何将jq输出多个数组放在单个数组中

How to put jq output multi arrays in single array

在使用 jq 从 json 文件中读取数据时。 此命令 jq ".[]|keys" config.json 给出以下输出:

[
  "N1",
  "N2"
]
[
  "N3",
  "N4"
]

我理想中想要的很简单:

["N1", "N2", "N3", "N4"]

然而, 我怎么找不到方法来完成这个。

配置文件:

{
    "Test1":{
        "N1":{
            "crn":"1",
            "con":"2"
        },
        "N2":{
            "crn":"100",
            "con":"200"
        }
        
    },
    "test2":{
        "N3":{
            "crn":"xx",
            "con":"2x"
        },
        "N4":{
            "crn":"xxxx",
            "con":"3xx"
        }
    }
}

改用map

jq 'map(keys[])' config.json
[
  "N1",
  "N2",
  "N3",
  "N4"
]

Demo

请注意 keys 对键进行排序。如果您希望它们不排序,请改用 keys_unsorted

此外,如果你想在一行中输出,请添加 --compact-output(或 -c)选项(thx @Cyrus)。