json - 对来自 2 个文件的 2 个 JSON 对象中的值求和
问题描述
我正在使用 jq 工具来合并 2 个 json 文件,但有一些重复的键,我希望重复的键将它们的值相加。
以下是文件:
文件1:
{
"total": {
"seconds": 1490
},
"days": {
"2020-05-20": {
"seconds": 1400
},
"2020-05-19": {
"seconds": 30
},
"2020-05-18": {
"seconds": 60
}
}
}
文件2:
{
"total": {
"seconds": 295
},
"days": {
"2020-05-22": {
"seconds": 120
},
"2020-05-21": {
"seconds": 80
},
"2020-05-20": {
"seconds": 95
}
}
}
预期输出:
{
"total": {
"seconds": 1785
},
"days": {
"2020-05-22": {
"seconds": 120
},
"2020-05-21": {
"seconds": 80
},
"2020-05-20": {
"seconds": 1495
},
"2020-05-19": {
"seconds": 30
},
"2020-05-18": {
"seconds": 60
}
}
}
我试过从这个命令开始,但不知道下一步该去哪里:
jq -s '.[0] * .[1]' file1 file2
解决方案
下面的程序适用于您的示例,但如果您的实际输入中的对象具有其他非数字值的键,它将无法正常工作。
jq '. as $in |
reduce paths(numbers) as $p (input;
setpath($p; getpath($p) + ($in | getpath($p))
)' file1 file2
推荐阅读
- django - 如何处理来自通过自定义模板标签加载的 Django 表单的 POST 请求?
- linux - fetchmail 警告 imap.gmail.com 服务器证书
- c# - 哪个属性或方法在 ASP.Net Core MVC 2.2 中返回活动/关闭/进行中状态的连接数
- ios - 导入的分发证书未显示在钥匙串访问中
- ssh - 在远程会话中使用 tmux 选择鼠标后复制到客户端剪贴板
- c++ - 如果方法用作 constexpr,则切换实现?
- flutter - 如何在颤振中不生成红框,android studio,
- java - 我得到一个空指针异常,我不知道为什么,你能帮帮我吗?爪哇
- julia - 如何解决两个输入都稀疏的线性系统?
- syntax-error - 使用 Lisp 查找列表的位置