Sorting 合并多个jq调用以对对象流的内容进行排序和限制
我有一个产品的json更新流,我正在尝试按版本对最后的X版本进行排序(它们当前按发布日期排序) 看起来jq不能直接对对象流进行排序,Sorting 合并多个jq调用以对对象流的内容进行排序和限制,sorting,jq,Sorting,Jq,我有一个产品的json更新流,我正在尝试按版本对最后的X版本进行排序(它们当前按发布日期排序) 看起来jq不能直接对对象流进行排序,sort\u by只对数组有效,我找不到一种方法将流收集到一个数组中,而不涉及将jq-c的输出管道连接到jq-s 我当前的解决方案:
sort\u by
只对数组有效,我找不到一种方法将流收集到一个数组中,而不涉及将jq-c
的输出管道连接到jq-s
我当前的解决方案:
我希望能够使用
jq.[]|选择(…)|按(.version)排序|限制(5)|反向
但是我找不到一个limit
s和sort\u by
在非数组上不起作用的东西
我正在atlassian的json版本上测试这一点:在
jq
中,您始终可以使用[…]
将结果放入数组,以便后续函数操作。您给定的要求可以简单地按如下方式完成
jq '[.[] | select(.platform | contains("Unix"))] | sort_by(.version) | limit(5;.[])'
查看它在v1.6上的测试工作
通过添加reverse()
函数,引入了另一个级别的数组嵌套。使用reverse[]
单独转储对象
jq '[[.[] | select(.platform | contains("Unix"))] | sort_by(.version) | limit(5;.[]) ] | reverse'
太好了,我不知道你可以把一个块用方括号括起来作为数组。另外,感谢极限示例,我没有意识到它需要一个选择器。我选择了
[.]| select(.platform | contains(“Unix”))]| sort|u by(.version)| reverse | limit(5;[])
limit/2
在输入已经是流时最有用。但是因为它是一个数组,所以只需要对它进行切片就更容易了<代码>…|排序依据(.version)[:5]