2016-07-21 9 views
1

Ich habe die folgende Nutzlastmehrere Felder aus einer JSON Nutzlast Extrahierung

[ 
    { 
    "name": "ProductCostingBJF_v2.3.0", 
    "commit": { 
    }, 
    "protection": { 
     "enabled": true, 
     "required_status_checks": { 
     "enforcement_level": "off", 
     "contexts": [] 
     } 
    } 
    }, 
    { 
    "name": "master", 
    "commit": { 
    }, 
    "protection": { 
     "enabled": true, 
     "required_status_checks": { 
     "enforcement_level": "off", 
     "contexts": [] 
     } 
    } 
    } 
] 

können Sie mit der jq Syntax helfen und ich habe ... den ersten Teil vorhanden

ProductCostingBJF_v2.3.0 true 
master      true 

zu ziehen I kann den Zweignamen mit

jq -r .[].name 

bekommen, aber ich kann nicht herausfinden, wie man den aktivierten Wert erhält.

+0

[] Name ,. []. protection.enabled so? – Bram

Antwort

1

Sie können folgende jq Befehl verwenden:

jq -r '.[]| "\(.name) \(.protection.enabled)"' a.json 

können Sie eine Pipe an column erhalten Ausgabe ausgerichtet:

jq -r '.[]| "\(.name) \(.protection.enabled)"' a.json | column -t 

Ausgang:..

ProductCostingBJF_v2.3.0 true 
master     true 
+1

Verwenden Sie stattdessen die String-Interpolation: '" \ (. Name) \ (. Protection.enabled) "' –

+0

Definitiv besser, da 'tostring' nicht explizit ausgeführt werden muss. Ich werde das von nun an konsequent nutzen! Danke für den Tipp! – hek2mgl

+1

Spot auf die Antwort - das war sehr gut bewertet und der Hinweis, wie man online geht, war sehr hilfreich –