两个不同的json文件与jq之间的相关性

时间:2017-06-04 16:58:07

标签: json bash jq

是否可以使用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",
}

感谢任何建议。

谢谢!

1 个答案:

答案 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] - 按顺序连接并发送到File1File2的标准输出内容

  • -s--slurp) - 不是为输入中的每个JSON对象运行过滤器,而是将整个输入流读入一个大型数组并仅运行一次过滤器。

  • if-then-else - condition,如果关键属性相等.[0] + .[1],则执行2个对象del(.servers,.ServerID)的合并以及删除比较的密钥.[0].servers == .[1].ServerID,否则 - 打印{ {1}}