json - bash脚本将多个json文件合并成一个json

标签 json bash jq

我有一个文件夹,其中包含 json 文件的子文件夹。

我需要编写一个 bash 脚本,将所有 json 文件组合成一个大的有效 json。

1)首先尝试使用jq将所有json文件合并到每个目录中,然后我需要再次将所有文件合并到一个大文件中。
我没能让它发挥作用。我使用了这个命令:

jq -rs 'reduce .[] as $item ({}; . * $item)'

2)其他选项是在开头创建一个json文件,以“[”-->处理所有目录中的所有文件,并为每个文件附加内容-->在末尾附加“]”。

我可以仅使用 jq 以第一种方式获得相同的结果吗?

最佳答案

一个非常简单的方法是:

jq -s 'flatten' $target/*/*.json > $merged_json
另一种选择(如果您需要使用 | ):
cat $target/*/*.json | jq -s 'flatten' > $merged_json
或者如果文件太多
find $target/* -name \*json cat {} |  jq -s 'flatten' > $merged_json

关于json - bash脚本将多个json文件合并成一个json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892884/

相关文章:

json - jq json对象连接到bash字符串数组

Bash 按字面打印颜色代码而不是实际颜色

Linux 读取 - x 秒后超时*空闲*

json - 提取嵌套 JSON 对象的模式

python - 什么 python 模块取代了 urllib2 以用于 python 3 和 flask?

java - Jackson JSON Unicode 符号处理

json - 加入 jsonb 数组中对象的值

php - 更好的想法如何从数据库中获取大量 MySql 数据

json - 在 bash 中用数组替换键

kubernetes - 如何使用 kubectl 命令从 k8s configmap 中的 yaml 文件中获取值?