我正在使用Jira为发行版创建一个bitbucket分支。作为构建过程的一部分,我需要从分支名称中提取版本号。
构建的早期部分将整个分支名称转储到文本文件。我遇到的问题是删除内部版本号之前的所有文本。
示例分支名称为:
release/some-jira-ticket-343-X.X.X
其中X.X.X是版本号,例如1.11.1(每个X可以是任何长度的整数)。
我的第一个想法是用sed选择最后3个字符,但是因为X可以是任何长度,这将无效。
另一篇文章(Removing non-alphanumeric characters with sed)建议使用sed alpha类。但是这不起作用,因为jira票证ID将包含数字。
有什么想法吗?
答案 0 :(得分:2)
您可以删除最后-
的所有字符:
$ sed 's/.*-//' <<< "release/some-jira-ticket-343-1.11.2"
1.11.2
或grep
,只输出行尾的数字和点:
grep -o '[0-9.]*$'
答案 1 :(得分:2)
awk
解决方案,
$ awk -F- '{print $NF}' <<< "release/some-jira-ticket-343-1.11.1"
grep
解决方案,
grep -oP '[0-9]-\K.*' <<< "release/some-jira-ticket-343-1.11.1"
答案 2 :(得分:1)
Awk解决方案:
awk -F [-.] '{ print $5"."$6"."$7 }' <<< "release/some-jira-ticket-343-12.4.7"
12.4.7
将字段分隔符设置为 - 和。然后提取我们需要的数据。
答案 3 :(得分:1)
使用字符串运算符:
var="release/some-jira-ticket-343-2.155.7"
echo ${var##*-}
打印:
2.155.7