假设我有以下内容:
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]
答案 0 :(得分:2)
jq有一个内置过滤器,用于按某些(可能是多值)条件进行分组:
jq -nc '[1,2,3,4,5,6,7] | group_by(. < 5)'
产生:
[[5,6,7],[1,2,3,4]]
答案 1 :(得分:1)
一种选择是使用reduce
:
reduce .[] as $x
([]; if $x < 5 then .[0] += [$x] else .[1] += [$x] end)
这将产生:
[[1,2,3,4],[5,6,7]]