You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JQ实现Semver版本筛选及灵活条件切换?

使用JQ内置方法筛选语义化版本对象

JQ可以通过内置的split和tonumber方法将字符串格式的语义化版本号转换为数字数组,利用数组的自然比较实现版本筛选,完全无需正则,且条件切换非常灵活。

1. 筛选版本等于"1.2.0"的对象

将版本号按.分割后转成数字数组,直接和目标版本的数字数组做相等判断:

.[] | select(.version | split(".") | map(tonumber) == [1,2,0])

执行后会输出所有版本严格等于1.2.0的对象(你的示例数据中无匹配结果)。

2. 筛选版本大于"1.2.7"的对象

利用JQ的数组比较逻辑(元素依次对比,直到找到第一个不同值),直接判断版本数组是否大于目标数组:

.[] | select(.version | split(".") | map(tonumber) > [1,2,7])

针对你的示例数据,执行后会输出以下结果:

{
  "id": 1,
  "version": "2.3.4"
},
{
  "id": 2,
  "version": "1.4.4"
},
{
  "id": 4,
  "version": "1.3.4"
}

灵活切换筛选条件

只需修改命令中对比的数字数组即可:

  • 筛选版本小于"1.4.0":将条件改为< [1,4,0]
  • 筛选版本大于等于"1.3.0":将条件改为>= [1,3,0]

内容的提问来源于stack exchange,提问作者Matias Barrios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:35:11