我用jq坚持下面的json。下面的元素按一些时间戳降序排序(不包括在json中)。我需要在id X之前选择id。例如。在id 1之前选择id应该返回2,3和5。
[
{
"id": 2,
"somekey": "somevalue"
},
{
"id": 3,
"somekey": "somevalue"
},
{
"id": 5,
"somekey": "somevalue"
},
{
"id": 1,
"somekey": "somevalue"
},
{
"id": 4,
"somekey": "somevalue"
}
]
任何想法如何在jq的单行中做到这一点?特别是“选择元素之前”部分。
答案 0 :(得分:1)
简短而简单:
.[0: map(.id) | index(1)]
喜欢但很快:
label $top | .[] | if .id == 1 then break $top else . end
答案 1 :(得分:0)
我想出了这个问题:
[.[].id] | to_entries | .[0:map(select(.value==1))[].key][].value
如果你知道一种不那么冗长的方法,请告诉我!