jq 仅在对象不匹配时显示



我正在尝试设置警报,当以下 JSON 对象状态说什么但已启动时。我开始玩条件jq,但我不确定如何将正则表达式实现到其中。

{
  "page": 0,
  "page_size": 100,
  "total_pages": 10,
  "total_rows": 929,
  "headers": [
    "*"
  ],
  "rows": [
    {
      "id": "168",
      "state": "STARTED"
    },
    {
      "id": "169",
      "state": "FAILED"
    },
    {
      "id": "170",
      "state": "STARTED"
    }
  ]
}

我只想显示失败对象的 id 和状态,这就是我尝试过的

jq '.rows[] | .id, select(.state | contains("!STARTED"))' test.json

我希望我的输出是这样的

{
 "id": "169",
 "state": "FAILED"
}

如果你只是想打印出 .state 不是 "STARTED" 的对象,只需使用否定:

.rows[] | select(.state != "STARTED")

如果"已启动"状态与多个值相关联,请提供更多详细信息。可能不需要使用正则表达式。 如果您确实需要使用正则表达式,那么您可能希望使用 test .

最新更新