使用jq查找JSON字典中不属于另一字典的所有元素

5vf7fwbs  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(119)

我必须JSON文件。
a.json

[ 
  { key1: "foo", key2: "bar"},
  { key1: "foo", key2: "baz"},
  { key1: "bla", key2: "blubb"},
]

b.json

[ 
  { key1: "foo", key2: "bar"},
  { key1: "foo", key2: "oof"},
  { key1: "bla", key2: "bla"},
]

我希望得到的结果是一个数组,其中包含第一个字典中不属于第二个字典的所有条目(相当于SQL中DISTINCT操作符的作用),因此预期输出为:

[ 
  { key1: "foo", key2: "baz"},
  { key1: "bla", key2: "blubb"},
]

如何使用jq实现这一点?

yftpprvb

yftpprvb1#

找不到有效的重复项,因此将此作为答案发布。
如果使用-s(slurp),则可以使用object1 - object2来获得它们之间的差异:

jq -s  '.[0] - .[1]' a b

将输出:

[
  {
    "key1": "foo",
    "key2": "baz"
  },
  {
    "key1": "bla",
    "key2": "blubb"
  }
]

相关问题