2017-09-09 2 views
1

Ich versuche, ein JSON-Dokument zu analysieren und ein paar Werte in derselben Zeile zu drucken. Gibt es eine Möglichkeit das folgende Dokument zu übernehmen:Drucken mehrerer Werte in derselben Zeile

{ 
    "fmep": { 
    "foo": 112, 
    "bar": 234324, 
    "cat": 21343423 
    } 
} 

Und ausspucken:

Ich kann den Wert bekomme ich will, aber sie sind in separaten Zeilen gedruckt:

$ echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | jq '.fmep|.foo,.bar' 

112 
234324 

Wenn es irgendwo ein Beispiel gibt, das zeigt, wie das geht, würde ich mich über Hinweise freuen.

Antwort

3

Der einfachste Weg in Ihrem Beispiel ist String Interpolation zusammen mit der -r Option zu verwenden. z.B.

echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \ 
jq -r '.fmep| "\(.foo) \(.bar)"' 

produziert

112 234324 

Sie auch die Werte in einem Array setzen betrachten wünschen können und mit @tsv z.B.

echo '{ "fmep": { "foo": 112, "bar": 234324, "cat": 21343423 } }' | \ 
jq -r '.fmep | [.foo, .bar] | @tsv' 

denen produziert Tabula getrennt

112 234324 
+0

Das funktioniert wie ein Charme! Es sieht so aus, als ob die Option jq "-j" ebenfalls funktioniert, aber die String-Interpolation ist besser lesbar. – Shibby

Verwandte Themen