2017-07-21 2 views
1

Ich bin etwas Zeit mit jq verstreut, um JSON-Datei zu analysieren. Ich muss die ID und den Namen in derselben Zeile abfragen, damit ich nachher etwas Logik machen kann.Wie zwei Werte seriell mit jq angezeigt werden?

{ 
"elements": [{ 
     "id": "e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f", 
     "name": "Mike", 
     "components": [{ 
      "id": "15f959fc-6d2d-451a-a59e-430a05a1852c", 
      "pid": "ZZZ1" 
     }], 
     "tenantIds": null, 
     "productIds": null 
    }, 
    { 
     "id": "d892f2eb-d7f3-49f8-9176-2113351cccf8", 
     "name": "Steve", 
     "components": [{ 
      "id": "0c44c917-e0e5-4fa3-b87c-89f9ac0815b4", 
      "pid": "XXX3" 
     }], 
     "tenantIds": null, 
     "productIds": null 
    } 
] 

}

Mit jq '{elements}[] | .[].id Ich erhalte IDs, aber ich kann nicht Lösung finden, wie neben ID geeigneten Namen hinzuzufügen. Ich habe versucht, so etwas wie

{elements}[] | .[].id + " " + .[].name 

und

{elements}[] | .[].id + .[].name 

aber es ist nicht das, was ich erwartet hatte.

Ich möchte bekommen:

15f959fc-6d2d-451a-a59e-430a05a1852c Mike 
d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve 

Jeder Vorschlag?

Danke!

Antwort

2

Anwenden Verkettung string:

jq '.elements[] | .id +" "+ .name' file 

Der Ausgang:

"e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f Mike" 
"d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve" 

Zur Ausgabe ohne doppelte Anführungszeichen verwenden -r (--raw-output) Option:

jq '.elements[] | .id +" "+ .name' -r file 
e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f Mike 
d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve 
+0

Perfect, das ist es . Vielen Dank! – Branko

+0

@Branko, gern geschehen – RomanPerekhrest

Verwandte Themen