JQ - 使用 unique_by 删除重复项

JQ - removing duplicates using unique_by

我正尝试通过 id 从以下 json 中删除重复项 这是 json:

{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    },
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 272320
    },
    {
      "name": "validation-of-art",
      "id": "13",
      "status": "passed",
      "duration": 272320
    }
  ]
}

这是我尝试过的:

jq -r 'unique_by(.Result.name)'

还有 jq 'unique_by(.Result[].name)'

我遇到错误 - Cannot index array with string "Result" 任何帮助将不胜感激。

这是一个使用 unique_by(.name)

消除除一个 .Result 对象之外的所有对象的示例
$ jq -M '.Result |= unique_by(.name)' data.json
{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    }
  ]
}

如果这不是您想要的,您可以轻松地概括它。例如。为每个唯一的对象保留一个对象 {name,id} 您可以使用

$ jq -M '.Result |= unique_by({name, id})' data.json
{
  "Result": [
    {
      "name": "validation-of-art",
      "id": "12",
      "status": "passed",
      "duration": 4740302
    },
    {
      "name": "validation-of-art",
      "id": "13",
      "status": "passed",
      "duration": 272320
    }
  ]
}