Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 合并多个jq调用以对对象流的内容进行排序和限制_Sorting_Jq - Fatal编程技术网

Sorting 合并多个jq调用以对对象流的内容进行排序和限制

Sorting 合并多个jq调用以对对象流的内容进行排序和限制,sorting,jq,Sorting,Jq,我有一个产品的json更新流,我正在尝试按版本对最后的X版本进行排序(它们当前按发布日期排序) 看起来jq不能直接对对象流进行排序,sort\u by只对数组有效,我找不到一种方法将流收集到一个数组中,而不涉及将jq-c的输出管道连接到jq-s 我当前的解决方案:

我有一个产品的json更新流,我正在尝试按版本对最后的X版本进行排序(它们当前按发布日期排序)

看起来jq不能直接对对象流进行排序,
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]