2016-11-26 159 views
1

鉴于此JSON片段,我试图找出使用jq提取与特定“实例id”相对应的密钥的名称。从json中提取密钥

我想这一点:

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

其中$ x的所有号码机。和 “wdc7ae” 是具体的 “实例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" 
 
    } 
 
    } 
 
}

任何帮助深表感谢。

回答

2

感谢'金鱼'从#jq irc频道。这里是'金鱼'共享的命令,对我来说就像一个魅力:

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