从 json 中提取密钥

Extracting key from a json

鉴于此 JSON 片段,我试图找出使用 jq 提取与特定 "instance-id" 对应的密钥的名称。

我正在尝试这个:

jq '.machines | keys as $x | if .[]."instance-id"=="wdc7ae" then <some-code-to-get-the-key>  else empty end'

其中 $x 包含所有机器号。 "wdc7ae" 是特定的 "instance-id" 值

{
  "model": {
    "name": "maas2",
    "controller": "ctr-xenial",
    "cloud": "maas",
    "version": "2.0.1"
  },
  "machines": {
    "1": {
      "dns-name": "10.4.0.181",
      "instance-id": "wdc7ae",
      "series": "xenial"
    },
    "2": {
      "dns-name": "10.4.0.182",
      "instance-id": "7mx74d",
      "series": "xenial"
    },
    "3": {
      "dns-name": "10.4.0.183",
      "instance-id": "rgn3ca",
      "series": "xenial"
    },
    "4": {
      "dns-name": "10.4.0.184",
      "instance-id": "kmy4bh",
      "series": "xenial"
    },
    "5": {
      "dns-name": "10.4.0.185",
      "instance-id": "eb38c7",
      "series": "xenial"
    }
  }
}

非常感谢任何帮助。

感谢来自#jq irc 频道的'Goldfish'。这是 'Goldfish' 分享的命令,对我来说非常有用:

.machines | to_entries[] | select(.value."instance-id" == "wdc7ae").key