json - bashscript 将多个json文件合并为一个json
问题描述
我有一个文件夹,其中包含 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
推荐阅读
- post - 使用 Elm 从 POST 请求中下载文件
- android - Android 8.0+ 特定时间的每日作业
- html - Blogger 博客存档显示在移动屏幕上的一半页面上
- javascript - 当我点击Javascript中的按钮时如何切换多个图像
- javascript - 使用 node.js 以表单形式上传图片
- jenkins - 使用 Jenkins 和 Generic-Artifactory 集成时如何指定版本号?
- android - 刷新活动一定次数
- mysql-workbench - Mysql 以“ok”响应,未在“Result Grid”中获得输出
- c# - 如何在 Unity 中应用缓动算法?
- linux - 如何在shell脚本的while循环中优化从大文件中读取