2017-12-30 35 views
1

jq를 사용하여 다음 json에 고정되어 있습니다. 아래의 요소는 시간 소인 (JSON에 포함되지 않음)별로 내림차순으로 정렬됩니다. ID X 이전에 ID를 선택해야합니다. ID 1 일 이전 ID를 2, 3, 5jq가있는 n 번째 요소 앞에 요소 선택

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

JQ와 한 줄에서이 작업을 수행하는 방법에 어떤 생각을 반환해야 선택? 특히 "이전 요소 선택"부분. 동일한을 달성하기 위해 덜 자세한 방법을 알고 있다면

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

이 알려 :

답변

1

짧고 간단 :

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

공상하지만 빠른 :

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

나는이 쿼리를 알아 냈어!