是否可以使用jq找到2个不同的json文件之间的相关性?我有2个文件,其中两个相同的ID密钥具有不同的信息。
File1中
{
"id": 3918389,
"name": "Application",
"servers": 5566625
}
文件2
{
"ServerID": 5566625,
"AccountID": 661737,
"HostName": "example.com",
}
我想要一个“ServerID”和“servers”相同的文件然后合并所有信息:
输出
{
"id": 3918389,
"name": "Application",
"AccountID": 661737,
"HostName": "example.com",
}
感谢任何建议。
谢谢!
答案 0 :(得分:2)
jq 解决方案:
cat File[1-2] | jq -s 'if .[0].servers == .[1].ServerID then
.[0] + .[1] | del(.servers,.ServerID) else "not match" end'
输出:
{
"id": 3918389,
"name": "Application",
"AccountID": 661737,
"HostName": "example.com"
}
详细说明:
cat File[1-2]
- 按顺序连接并发送到File1
和File2
的标准输出内容
-s
(--slurp
) - 不是为输入中的每个JSON对象运行过滤器,而是将整个输入流读入一个大型数组并仅运行一次过滤器。
if-then-else
- condition,如果关键属性相等.[0] + .[1]
,则执行2个对象del(.servers,.ServerID)
的合并以及删除比较的密钥.[0].servers == .[1].ServerID
,否则 - 打印{ {1}}