jq 将 json 个文件组合成一个数组
jq combine json files into single array
我有几个 json 文件要合并。有些是对象数组,有些是单个对象。我想有效地将所有这些连接成一个数组。
例如:
[
{ "name": "file1" }
]
{ "name": "file2" }
{ "name": "file3" }
最后我想:
[
{ "name": "file1" }
{ "name": "file2" },
{ "name": "file3" },
]
我如何使用 jq
或类似工具执行此操作?
做到了:
jq -n '[inputs] | add' $(find . -name '*.json') > combined.json
以下说明了完成所需任务的有效方法:
jq -n 'reduce inputs as $in (null;
. + if $in|type == "array" then $in else [$in] end)
' $(find . -name '*.json') > combined.json
-n 命令行选项是避免跳过第一个文件所必需的。
我有几个 json 文件要合并。有些是对象数组,有些是单个对象。我想有效地将所有这些连接成一个数组。
例如:
[
{ "name": "file1" }
]
{ "name": "file2" }
{ "name": "file3" }
最后我想:
[
{ "name": "file1" }
{ "name": "file2" },
{ "name": "file3" },
]
我如何使用 jq
或类似工具执行此操作?
做到了:
jq -n '[inputs] | add' $(find . -name '*.json') > combined.json
以下说明了完成所需任务的有效方法:
jq -n 'reduce inputs as $in (null;
. + if $in|type == "array" then $in else [$in] end)
' $(find . -name '*.json') > combined.json
-n 命令行选项是避免跳过第一个文件所必需的。