使用jq选择第n个元素之前的元素

时间:2017-12-30 18:05:53

标签: json jq

我用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的单行中做到这一点?特别是“选择元素之前”部分。

2 个答案:

答案 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

如果你知道一种不那么冗长的方法,请告诉我!