jq:基于过滤器的分区
jq: partition based on a filter
假设我有以下内容:
jq 'map(select(. >= 5))'
给定 [1,2,3,4,5,6,7]
它 returns:
[5,6,7]
我也有
jq 'map(select(. < 5))'
给定相同的数据,returns [1,2,3,4]
。我怎样才能同时进行这些补充查询,以便我收到例如:
[1,2,3,4], [5,6,7]
一种选择是使用 reduce
:
reduce .[] as $x
([]; if $x < 5 then .[0] += [$x] else .[1] += [$x] end)
这将产生:
[[1,2,3,4],[5,6,7]]
jq 有一个 built-in 过滤器,用于按某些(可能 multi-valued)标准进行分组:
jq -nc '[1,2,3,4,5,6,7] | group_by(. < 5)'
产生:
[[5,6,7],[1,2,3,4]]
假设我有以下内容:
jq 'map(select(. >= 5))'
给定 [1,2,3,4,5,6,7]
它 returns:
[5,6,7]
我也有
jq 'map(select(. < 5))'
给定相同的数据,returns [1,2,3,4]
。我怎样才能同时进行这些补充查询,以便我收到例如:
[1,2,3,4], [5,6,7]
一种选择是使用 reduce
:
reduce .[] as $x
([]; if $x < 5 then .[0] += [$x] else .[1] += [$x] end)
这将产生:
[[1,2,3,4],[5,6,7]]
jq 有一个 built-in 过滤器,用于按某些(可能 multi-valued)标准进行分组:
jq -nc '[1,2,3,4,5,6,7] | group_by(. < 5)'
产生:
[[5,6,7],[1,2,3,4]]