json - 使用 jq 从每个主要节点版本获取最新版本

标签 json shell grouping jq

是否有任何聪明的方法可以使用 jq 从每个主要节点版本获取最新版本?或者我是否必须编写另一个包装器 shell 脚本来处理其输出?

我想要获取的(主要有三个版本:v8、v9和v10)最新版本:

v10.1.0
v9.11.1
v8.11.2

发布列表:

$ export repo='nodejs/node'
$ curl -s https://api.github.com/repos/${repo}/tags |jq -r ".[].name"
v10.1.0
v10.0.0
v9.11.1
v9.11.0
v9.10.1
v9.10.0
v9.9.0
v9.8.0
v9.7.1
v9.7.0
v9.6.1
v9.6.0
v9.5.0
v9.4.0
v9.3.0
v9.2.1
v9.2.0
v9.1.0
v9.0.0
v8.11.2
v8.11.1
v8.11.0
v8.10.0
v8.9.4
v8.9.3
v8.9.2
v8.9.1
v8.9.0
v8.8.1
v8.8.0

最佳答案

您可以通过管道传输到此 awk 命令:

awk -F. '!major[$1]++'

它使用句点作为字段分隔符,并打印从未见过第一个字段的每一行,这是主要版本。

如果输入未排序并且您有 GNU 排序,则可以使用其版本排序:

sort -rV | awk -F. '!major[$1]++'

其中 -V 表示“版本排序”,-r 表示“反向”。

关于json - 使用 jq 从每个主要节点版本获取最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50440891/

相关文章:

java - 我怎样才能用android发送多张图片

bash - 如何在 Bash 中将变量设置为命令的输出?

linux - 仅在 bash 脚本中检查可执行文件时计算文件夹和可执行文件?

Python Pandas 在 groupby 和聚合之后排序

java - 字符串到数组 Java 到 Json 对象

javascript - 在 promise 链上使用 setTimeout

c++ - Excel 互操作 : Grouping columns

r - 如何添加到 group_by_at dplyr 函数中的分组

javascript - 如何使用相同/重复的键构建关联数组

bash - 如何使用具有整数结果的变量来划分 float ?