使用sed从文件指定字符串中提取纯版本号、去除多余后缀的方法咨询
版本号提取命令调整方案
你可以修改sed的正则匹配规则,仅捕获v-后到后续特殊符号前的版本号部分即可,以下是可行方案:
方案1:调整你现有的sed命令
直接修改正则捕获规则,命令如下:
echo str3=https://product.org/v-4.5-bin.zip | sed -n "s/^.*v-\([0-9.]*\).*/\1/p"
规则说明:
\([0-9.]*\)仅捕获v-后连续的数字和小数点组成的版本号部分- 末尾的
.*会匹配掉-bin.zip等所有剩余内容,最终输出的捕获组1就是纯版本号4.5
方案2:合并grep+sed操作,单命令直接读取文件
不需要单独执行grep,直接用sed处理原文件file.txt即可得到结果:
sed -n "s/^str3=.*v-\([0-9.]*\).*/\1/p" file.txt
通用扩展方案
如果后续版本号可能包含字母等其他非符号字符,可以用匹配非-字符的规则适配:
# 适配v-后到第一个-之前的所有内容为版本号的场景 sed -n "s/^.*v-\([^-]*\).*/\1/p" file.txt
内容的提问来源于stack exchange,提问作者jrz
相关产品推荐
相关产品推荐

