2016-11-26 3 views
1

Angesichts dieses JSON-Snippets, ich versuche herauszufinden, den Namen des Schlüssels entsprechend einer bestimmten "Instanz-ID" mithilfe von jq zu extrahieren.Extrahieren von Schlüssel aus einem JSON

Ich versuche dies:

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

wo $ x alle Maschinenzahlen hat. und "wdc7ae" ist die spezifische "Instanz-ID" Wert

{ 
 
    "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" 
 
    } 
 
    } 
 
}

Jede Hilfe sehr geschätzt wird.

Antwort

2

Dank 'Goldfish' von #JQ IRC-Kanal. Hier ist der Befehl, der 'Goldfish' für mich wie ein Charme geteilt und funktioniert:

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