在 Shell 脚本中使用 Jq 比较两个 JSON 文件并从文件输出不匹配的值

Compare two JSON file and output unmatched values from a file using Jq in Shell script

如何从 JSON 文件中输出与另一个 JSON 文件不匹配的对象。例如,

文件 1:

[
{ 
  "name": "ABC",
  "age": "23",
  "address": "xyz"
},
{
  "name": "DEF",
  "age": "24",
  "address": "pqr"
}
]

文件 2:

[
{ 
  "name": "ABC",
  "age": "23",
  "address": "xyz"
},
{
  "name": "GHI",
  "age": "24",
  "address": "pqr"
}
]

我想要 file2 的输出与 file1 不匹配。示例:

输出文件:

[
{
  "name": "GHI",
  "age": "24",
  "address": "pqr"
}
]

我希望使用 Jq 在 shell 脚本中实现。

jq 减号运算符正是您所需要的。只需使用 --slurpfile 将两个文件都放入变量中:

jq -n --slurpfile file1 file1.json --slurpfile file2 file2.json '$file2[0] - $file1[0]'