2016-01-17 7 views
13

Meine Eingabedatei sieht in etwa so aus:Wie kann ich mehrere Felder in jq

{ 
"login": "dmaxfield", 
"id": 7449977, 
... 
} 
{ 
"login": "dmaxfield", 
"id": 7449977, 
... 
} 

Ich kann mit all dem Login-Namen erhalten: cat members | jq '.[].login'

aber ich habe nicht in der Lage gewesen, die zu knacken Syntax um die Login und ID zu bekommen?

+0

Können Sie ein Beispiel geben, was Ihre erwartete Ausgabe aussehen sollte? Es gibt viele Möglichkeiten, wie die Login/ID-Paare dargestellt werden können. –

Antwort

20

Sie können jq '.[] | .login, .id' verwenden, um jedes Login gefolgt von seiner ID zu erhalten.

+0

Scheint wie die Eingabe ist bereits ein Strom von Objekten. –

+0

Die Beispieleingabe der Benutzer sieht wie ein Strom von Objekten aus, aber aufgrund des von ihnen bereitgestellten Beispielskripts nehme ich an, dass sie in ein Array eingeschlossen ist, das sie weggelassen haben. –

+0

@SantiagoLapresta: Es gibt keine Notwendigkeit für diese Annahme. 'jq' funktioniert gut mit einer Sequenz von Objekten - keine Notwendigkeit für den Array-Wrapper. Die '...' Zeichenfolgen und das letzte abschließende Komma müssen entfernt werden, aber das halte ich für implizit. –

6

Dies funktioniert für mich:

> echo '{"a":1,"b":2,"c":3}{"a":1,"b":2,"c":3}' | jq '{a,b}' 
{ 
    "a": 1, 
    "b": 2 
} 
{ 
    "a": 1, 
    "b": 2 
} 
Verwandte Themen