如何从指定格式的rzp前缀压缩包文件名中提取release版本值?
问题原因
你原有sed命令出错的核心问题是正则规则里包含了[:digit:]数字匹配项,会将目标串开头的数字也纳入前缀匹配范围一起删除,因此无法得到正确结果。
可行解决方案
方案1:修改sed匹配规则(通用场景)
直接匹配文件名前两段-分隔的前缀并删除,适配所有你给出的命名格式:
echo "$fl_name" | sed 's/^[^-]*-[^-]*-//'
规则说明:
^[^-]*匹配从开头到第一个-的所有非-字符- 连续两次匹配后即可删除前两段前缀,剩余内容就是你需要的目标串
方案2:Bash原生参数扩展(无外部依赖,性能最优)
不需要调用管道和外部命令,直接用bash内置变量处理:
result="${fl_name#*-*-}"
直接输出$result即可得到目标值。
方案3:cut命令实现(写法最简单)
用-作为分隔符,取第3个字段及之后的所有内容拼接输出:
echo "$fl_name" | cut -d'-' -f3-
内容的提问来源于stack exchange,提问作者ashish_k
相关产品推荐
相关产品推荐

