我有一系列这样的JSON文件:
[
{
"bent_general": "0",
"bext_general": "0",
"date_yyyymmdd": "20171104",
"end_time": "2017-11-07T02:58:56",
"householdid": "EAM2231"
},
{
"bent_general": "2",
"bext_general": "8",
"date_yyyymmdd": "20171126",
"end_time": "2017-12-07T05:58:56",
"householdid": "EAM1234",
}
]
我需要将它们组合在一个具有相同结构的大文件中:
[
{
"data_from": "first_file"
},
{
"data_from": "second_file"
}
]
我试过了: jq -s。 file1 file2
但结果是:
[
[
{
"data_from": "first_file"
}
]
,
[
{
"data_from": "second_file"
}
]
]
任何想法都表示赞赏。
答案 0 :(得分:1)
从问题中预期的输出应该是什么并不完全清楚,但看起来你想要连接数组。
如果是这种情况,并且您的文件列表是file1 file2 ...那么以下调用将是合适的:
jq add file1 file2 ...
P.S。将来,请遵循http://stackoverflow.com/help/mcve最小完整可验证示例
中的指南答案 1 :(得分:0)
我遇到了同样的问题,并在github上找到了解决方案:https://github.com/stedolan/jq/issues/805#issuecomment-109783967
使用-s选项将返回一个包含输入JSON文件内容的数组,在您的情况下,它们也是数组。这意味着您需要扩展(…[])两个数组级别,并收集([…])结果。
jq -s '[.[][]]' a-*.json > manifest.json
答案 2 :(得分:0)
我能够通过以下方式解决此问题:
jq -s 'flatten' file1 file2 ...
因此-s(slurp)组装一个文件内容数组(数组),flatten
删除多余的[]级别,并且输出是所有文件中所有记录的数组。