2016-08-05 11 views

Antwort

3

Vorausgesetzt, dass Sie den Schlüssel/Werte des apps Objekt auflisten wollte:

$ jq -r '.apps | to_entries[] | "\(.key)\t\(.value)"' input.json 

Um ein anderes Programm aufzurufen die Verwendung von Ausgabe als Argumente, sollten Sie sich mit xargs:

vertraut machen
+0

Was passiert, wenn ich ein Werkzeug gegen die Werte, das heißt tatsächlich laufen wollte: 'foreach App: MyTool $ key $ val done' – solemnify

+0

Dann die Ergebisse zu xargs oder etwas ... –

+0

@JeffMercado ein wenig mehr Erklärung zu diesem Kommentar wäre sehr zu begrüßen. Angenommen, @solymnify versucht, einen Befehl wie 'apt-get install $ {APP} -y' auszuführen. Was ist das 'xargs' Format? –

0

Hier ist ein Bash-Skript, das eine mögliche Lösung zeigt.

#!/bin/bash 
json=' 
{ 
    "apps": { 
     "firefox": "1.0.0", 
     "ie": "1.0.1", 
     "chrome": "2.0.0" 
    } 
}' 

jq -M -r ' 
    .apps | keys[] as $k | $k, .[$k] 
' <<< "$json" | \ 
while read -r key; read -r val; do 
    echo "$key $val" 
done 

Beispiel Ausgabe

chrome 2.0.0 
firefox 1.0.0 
ie 1.0.1