2017-12-30 12 views
1

Ich bin auf dem folgenden JSON mit jq stecken. Die folgenden Elemente sind absteigend nach einem Zeitstempel sortiert (nicht im json enthalten). Ich muss die IDs vor ID X auswählen. wählen ids vor id 1 2 zurückkehren sollte, 3 und 5.Wählen Sie Elemente vor N-Element mit JQ

[ 
    { 
    "id": 2, 
    "somekey": "somevalue" 
    }, 
    { 
    "id": 3, 
    "somekey": "somevalue" 
    }, 
    { 
    "id": 5, 
    "somekey": "somevalue" 
    }, 
    { 
    "id": 1, 
    "somekey": "somevalue" 
    }, 
    { 
    "id": 4, 
    "somekey": "somevalue" 
    } 
] 

Jede Idee, wie dies mit jq in einem Einzeiler zu tun? Insbesondere der Teil "Elemente vorwählen".

Antwort

1

Kurz und knapp:

.[0: map(.id) | index(1)] 

Fancy aber schnell:

label $top | .[] | if .id == 1 then break $top else . end 
0

dachte ich diese Abfrage aus:

[.[].id] | to_entries | .[0:map(select(.value==1))[].key][].value 

Wenn Sie eine weniger ausführliche Art und Weise kennen, das gleiche zu erreichen, lassen Sie es mich wissen!

Verwandte Themen