合并多个jq调用以排序和限制对象流的内容
我试图获取按版本排序的最新X版本(它们目前按发布日期排序)。Jq看起来不能直接排序对象流,也找不到如何在不包含将jq-c的输出传递给jq-s的数组中收集流。但是,我找不到那些不能在limits和sort_by非数组中工作的东西;你总是可以使用[..]将结果包含在一个数组中。为了操作下面的函数,给定的请求可以很容易地完成如下提问开始:
我有一个产品更新的json流,我正在尝试获得按版本排序的最新X版本(它们目前是按发布日期排序的)。
看起来jq不能直接对对象流进行排序,sort_by
只能在数组上工作,我也找不到一种方法来将流收集到一个不涉及通过管道将jq -c
的输出传递给jq -s
的数组中。
我目前的解决方案是:
< xx \
jq -c '.[] | select(.platform | contains("Unix"))' \
| jq -cs 'sort_by(.version) | reverse | .[]' \
| head -5 \
| jq -C . \
| less
我希望能够使用
jq '.[] | select(...) | sort_by(.version) | limit(5) | reverse'
但是我找不到limit
s和sort_by
不能在非数组上工作的东西。
我正在atlassian的json上测试它的发行版:https://my.atlassian.com/download/feeds/archived/bamboo.json
回答开始:得票数 1在jq
中,您总是可以使用[..]
将结果包含到一个数组中,然后将结果放到一个数组中,以便后续函数对其进行操作。您给定的需求可以简单地按如下方式完成
jq '[.[] | select(.platform | contains("Unix"))] | sort_by(.version) | limit(5;.[])'
查看它在v1.6上测试的jq playground上的工作情况
并且通过添加reverse()
函数,引入了另一个级别的数组嵌套。使用reverse[]
单独转储对象
jq '[[.[] | select(.platform | contains("Unix"))] | sort_by(.version) | limit(5;.[]) ] | reverse'
总结
以上是真正的电脑专家为你收集整理的合并多个jq调用以排序和限制对象流的内容的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。
你可能想看: