我想合并两个包含JSON的文件。它们每个都包含一个JSON对象数组。
registration.json
[
{ "name": "User1", "registration": "2009-04-18T21:55:40Z" },
{ "name": "User2", "registration": "2010-11-17T15:09:43Z" }
]
Run Code Online (Sandbox Code Playgroud)
useredits.json
[
{ "name": "User1", "editcount": 164 },
{ "name": "User2", "editcount": 150 },
{ "name": "User3", "editcount": 10 }
]
Run Code Online (Sandbox Code Playgroud)
在理想情况下,由于合并操作,我希望获得以下内容:
[
{ "name": "User1", "editcount": 164, "registration": "2009-04-18T21:55:40Z" },
{ "name": "User2", "editcount": 150, "registration": "2010-11-17T15:09:43Z" }
]
Run Code Online (Sandbox Code Playgroud)
我已经找到https://github.com/stedolan/jq/issues/1247#issuecomment-348817802但我得到了
jq: error: module not found: jq
Run Code Online (Sandbox Code Playgroud)
虽然没有严格回答问题,但下面的命令
jq -s 'flatten | group_by(.name) | map(reduce .[] as $x ({}; . * $x))'
registration.json useredits.json
Run Code Online (Sandbox Code Playgroud)
生成此输出:
[
{ "name": "User1", "editcount": 164, "registration": "2009-04-18T21:55:40Z" },
{ "name": "User2", "editcount": 150, "registration": "2010-11-17T15:09:43Z" },
{ "name": "User3", "editcount": 10 }
]
Run Code Online (Sandbox Code Playgroud)
来源: jq - 合并两个 JSON 文件时出错“无法相乘”
jq 解:
jq -s '[ .[0] + .[1] | group_by(.name)[]
| select(length > 1) | add ]' registration.json useredits.json
Run Code Online (Sandbox Code Playgroud)
输出:
[
{
"name": "User1",
"registration": "2009-04-18T21:55:40Z",
"editcount": 164
},
{
"name": "User2",
"registration": "2010-11-17T15:09:43Z",
"editcount": 150
}
]
Run Code Online (Sandbox Code Playgroud)