Mein json sieht wie folgt aus zu erhalten:So verwenden `jq` die Schlüssel
{
"20160522201409-jobsv1-1": {
"vmStateDisplayName": "Ready",
"servers": {
"20160522201409 jobs_v1 1": {
"serverStateDisplayName": "Ready",
"creationDate": "2016-05-22T20:14:22.000+0000",
"state": "READY",
"provisionStatus": "PENDING",
"serverRole": "ROLE",
"serverType": "SERVER",
"serverName": "20160522201409 jobs_v1 1",
"serverId": 2902
}
},
"isAdminNode": true,
"creationDate": "2016-05-22T20:14:23.000+0000",
"totalStorage": 15360,
"shapeId": "ot1",
"state": "READY",
"vmId": 4353,
"hostName": "20160522201409-jobsv1-1",
"label": "20160522201409 jobs_v1 ADMIN_SERVER 1",
"ipAddress": "10.252.159.39",
"publicIpAddress": "10.252.159.39",
"usageType": "ADMIN_SERVER",
"role": "ADMIN_SERVER",
"componentType": "jobs_v1"
}
}
Mein Schlüssel hält von Zeit zu Zeit zu ändern. So zum Beispiel 20160522201409-jobsv1-1
kann morgen etwas anderes sein. Auch ich darf mehr als einen solchen Eintrag in der Json-Payload.
Ich möchte echo $KEYS
und ich versuche es mit jq
zu tun.
Dinge, die ich versucht habe: | jq .KEYS
ist der Befehl, den ich häufig verwende.
Gibt es einen jq Befehl, um alle Primärschlüssel im json anzuzeigen?
Ich interessiere mich nur für das Feld hostname
. Und ich möchte das herausholen. Ich weiß, wie man es mit grep
macht, aber es ist kein sauberer Ansatz.
Gibt es einen Grund, warum Sie benötigen diesen Schlüssel zu wissen, anstatt nur direkt an die Abfrage durch Dinge darunter? –
(BTW, ein All-Caps-Shell-Variablenname wie '$ KEYS' ist eine schlechte Form; die POSIX-Spezifikation für Umgebungsvariablen gibt an, dass es der Namespace von * Kleinbuchstaben * für die Anwendungsbenutzung ist; da Shell-Variablen und Umgebungsvariablen teilen Sie einen Namespace, nach dieser Konvention vermeidet Kollisionen. Siehe http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html) –
Ich interessiere mich für den Hostnamen, und ich interessiere mich nicht für die Schlüssel. Und ich kann mehrere Einträge im JSON haben. – sudhishkr