2016-11-26 139 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