首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jq:基于过滤器的分区

jq:基于过滤器的分区
EN

Stack Overflow用户
提问于 2019-05-17 05:11:51
回答 2查看 116关注 0票数 1

假设我有以下内容:

代码语言:javascript
复制
jq 'map(select(. >= 5))'

给定[1,2,3,4,5,6,7],它将返回:

代码语言:javascript
复制
[5,6,7]

我也有

代码语言:javascript
复制
jq 'map(select(. < 5))'

如果给定相同的数据,则返回[1,2,3,4]。我如何同时执行这些互补查询,以便我收到以下示例:

代码语言:javascript
复制
[1,2,3,4], [5,6,7]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-17 05:49:13

jq有一个内置的过滤器,用于按某种(可能是多值)标准进行分组:

代码语言:javascript
复制
jq -nc '[1,2,3,4,5,6,7] | group_by(. < 5)'

产生:

代码语言:javascript
复制
[[5,6,7],[1,2,3,4]]
票数 3
EN

Stack Overflow用户

发布于 2019-05-17 05:19:54

一种选择是使用reduce

代码语言:javascript
复制
reduce .[] as $x
([]; if $x < 5 then .[0] += [$x] else .[1] += [$x] end)

这将产生:

代码语言:javascript
复制
[[1,2,3,4],[5,6,7]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56176686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档