从 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
鉴于此 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