如何用jq提取各Node.js主版本的最新发布版本?
提取Node.js指定主版本的最新发布版本(无需额外Shell脚本)
当然有更便捷的办法,完全不用额外写Shell包装脚本——用jq本身就能直接搞定这个需求!我们可以通过对GitHub API返回的标签数据进行过滤、分组和提取,一步得到你想要的结果。
完整命令
export repo='nodejs/node' curl -s https://api.github.com/repos/${repo}/tags | jq -r ' .[] | select(.name | test("^v(8|9|10)\\.")) | {major: .name | capture("^v(\\d+)\\.").major, name: .name} | group_by(.major) | map(.[0].name) | join(" ") '
命令逻辑拆解
我们来一步步看这个jq脚本的作用:
- 过滤目标版本:
select(.name | test("^v(8|9|10)\\."))只保留以v8.、v9.、v10.开头的标签,精准锁定你需要的主版本范围。 - 提取主版本标识:
capture("^v(\\d+)\\.")从版本名称中提取主版本号(比如从v10.1.0中提取10),为后续分组做准备。 - 按主版本分组:
group_by(.major)将同一主版本的所有标签归为一组,方便我们单独处理每个主版本的最新版。 - 提取每组最新版本:
map(.[0].name)由于GitHub API返回的标签是按发布时间倒序排列的,每组的第一个元素就是该主版本的最新发布版本。 - 格式化输出:
join(" ")将结果用空格连接成一行,完全匹配你预期的输出格式。
预期输出
运行上述命令后,你会得到类似这样的结果(版本号会随Node.js官方更新而变化):
v10.1.0 v9.11.1 v8.11.2
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

