2017-08-31 6 views
0

Ich benutze jq 1.5 in einer Windows 10 Umgebung. Ich erhalte über api mehr Informationen andere Stadt Arrays wie das sind:Extrahiere den ersten und letzten Wert eines JSON Array/Objekts

{ 

    "cruises": [ 
    { 

     "waypoint_cities": [ 
     "Palma de Mallorca", 
     "Cádiz", 
     "Puerto del Rosario, Fuerteventura", 
     "Arrecife, Lanzarote", 
     "Arrecife, Lanzarote", 
     "Agadir", 
     "Gibraltar", 
     "Barcelona", 
     "Palma de Mallorca" 
     ]}]} 

Wie kann ich die erste und der letzte Eintrag dieser Arrays mit jq finden? Ich habe die Funktion min/maxby ausprobiert, aber diese Funktion liefert nur die Einträge mit dem ersten und letzten Zeichen des Alphabets.

Grüße Timo

+0

zeigen Sie Ihre erwartete Ausgabe – RomanPerekhrest

Antwort

3

Hier ist eine Lösung unter Verwendung von first und last

.cruises[].waypoint_cities | first, last 

Ausgabe

"Palma de Mallorca" 
"Palma de Mallorca" 
+0

Hi @ jq170727, funktioniert wie ein Charme. – TimoC

-1

die Daten Angenommen wird analysiert und lebt in var data:

  • zuerst: data.cruises[0].waypoint_cities[0]
  • zuletzt: data.cruises[0].waypoint_cities[data.cruises[0].waypoint_cities.length-1]
1

[0] liefert das erste Element in eine Anordnung; [-1] gibt das letzte zurück. (Siehe "Grundfilter" Abschnitt des Handbuchs.)

Für die Eingabe über

gegebenen
jq '.[][][][0, -1]' 

liefert diesen Ausgang

"Palma de Mallorca" 
"Palma de Mallorca" 
Verwandte Themen