Json 使用jq将多个列表合并到单个列表中

Json 使用jq将多个列表合并到单个列表中,json,jq,Json,Jq,我有一个aws cli bash循环,生成多个json列表,其中包含字典。 我无法让jq将这些列表合并成一个包含所有字典的大列表 e、 g 这将通过管道传输到jq,我希望将其合并到 [ { "key1": "value1", "key2": "value2" }, { "key1": "value3", "key2": "value4"

我有一个aws cli bash循环,生成多个json列表,其中包含字典。 我无法让jq将这些列表合并成一个包含所有字典的大列表

e、 g

这将通过管道传输到jq,我希望将其合并到

[ { "key1": "value1", "key2": "value2" },
  { "key1": "value3", "key2": "value4" },
  { "key1": "value5", "key2": "value6" },
  { "key1": "value7" }
]

我用awk破解了一个补丁,一定有办法用jq解决

| awk 'NR==1{print}NR>1{sub(/^]/,"");sub(/^\[/,",");print}END{print "]"}' \

它的作用,1。跳过第1行[保留原位,2.删除第3行开头的所有^]。替换[行开始时为,新列表开始,和4。结束时用关闭所有]

我用awk破解了一个修复程序,必须有办法用jq完成

| awk 'NR==1{print}NR>1{sub(/^]/,"");sub(/^\[/,",");print}END{print "]"}' \
它的作用,1。跳过第1行[保留原位,2.删除第3行开头的所有^]。替换[在行首处为,新列表开始,和4。在结尾处用关闭]

您要使用添加。这将允许您将列表合并到一个列表中

添加 数组的元素添加在一起。这可能意味着, 连接或合并,具体取决于 输入数组-规则与+运算符的规则相同 过滤器add将数组作为输入,并生成作为输出

您想使用add。这将允许您将列表合并到一个列表中

添加 数组的元素添加在一起。这可能意味着, 连接或合并,具体取决于 输入数组-规则与+运算符的规则相同 过滤器add将数组作为输入,并生成作为输出


假设您有jq 1.5,则此解决方案发布在此处:

提供将jq-n与输入运算符一起使用的基本技术

cat FILE | jq -n '[inputs|.[]]'

这就是诀窍。[inputs]将多个结果粘在一个列表中,“[]”将删除添加的额外级别的列表。

假设您有jq 1.5,则此解决方案发布在此处:

提供将jq-n与输入运算符一起使用的基本技术

cat FILE | jq -n '[inputs|.[]]'

这就是诀窍。[inputs]将多个结果粘在一个列表中,“[]”将删除添加的额外级别的列表。

该片段不是有效的JSON。正确引用输入中的值shown@Inian感谢修复了jsonNo,它不是-,尝试将它粘贴到这里jq-s add filename工作正常。我在那里检查了它,第二位结果是有效的,第一位只是3个json列表,这就是问题所在。bash循环运行aws cli并每次返回一个新的json列表,我试图使用jQT将它们合并为一个。该片段不是有效的json。正确引用输入中的值shown@Inian感谢修复了jsonNo,它不是-,尝试将它粘贴到这里jq-s add filename工作正常。我在那里检查了它,第二位结果是有效的,第一位只是3个json列表,这就是问题所在。bash循环运行awscli,每次都会返回一个新的json列表,我试图使用jq将它们合并成一个