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

使用Sed从字符串提取版本号的正确正则表达式求助

Sed 提取末尾版本号解决方案

可用命令

直接执行以下命令即可提取目标版本号:

echo "1012-EPS-Test-OF-Something-1.3" | sed -E 's/^.*-([0-9.]+)$/\1/'

执行后输出结果为:1.3

命令说明

  • -E 参数开启扩展正则表达式,无需手动转义捕获分组的括号
  • 正则逻辑:匹配整行内容,只保留最后一个-后由数字、点组成的版本号部分
    • ^.*-:匹配从行首到最后一个-的所有内容
    • ([0-9.]+):捕获组1,匹配1个及以上的数字、点字符,即目标版本号
    • $:匹配行尾,确保匹配到的是行末尾的版本号
    • \1:替换整行内容为捕获组1的匹配结果

该方案同时兼容多段版本号提取,比如待处理字符串为xxx-xxx-2.4.15,也可以正确提取出2.4.15。

原写法错误原因

你之前使用的sed 's/[^0-9.0-9]*//'存在两个问题:

  • 字符组[^0-9.0-9]逻辑冗余,字符组内仅需写[^0-9.]即可表示匹配非数字、非点的字符,重复写0-9不会产生额外效果
  • 仅替换了行首的非数字/点内容,会保留字符串开头的1012,无法过滤前缀内容拿到末尾的版本号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:00:04