JQ: раздел на основе фильтра - PullRequest
0 голосов
/ 17 мая 2019

Допустим, у меня есть следующее:

jq 'map(select(. >= 5))'

учитывая [1,2,3,4,5,6,7] возвращает:

[5,6,7]

У меня также есть

jq 'map(select(. < 5))'

, который дал те же данные, возвращает [1,2,3,4]. Как я могу сделать эти дополнительные запросы одновременно, чтобы я получил, например:

[1,2,3,4], [5,6,7]

Ответы [ 2 ]

2 голосов
/ 17 мая 2019

jq имеет встроенный фильтр для группировки по некоторому (возможно, многозначному) критерию:

jq -nc '[1,2,3,4,5,6,7] | group_by(. < 5)'

производит:

[[5,6,7],[1,2,3,4]]
1 голос
/ 17 мая 2019

Один из вариантов - использовать reduce:

reduce .[] as $x
([]; if $x < 5 then .[0] += [$x] else .[1] += [$x] end)

Это даст:

[[1,2,3,4],[5,6,7]]
...