如何在BitBucket Pipeline中用正则提取分支名中的工单名称?
从BitBucket Pipeline分支名中提取工单ID的方法
针对你的分支名称格式(如fix/DOM-123-my-ticket-info),可以用以下几种bash实现方式提取DOM-123:
方法1:使用bash正则匹配(推荐)
利用bash内置的正则表达式匹配功能,精准捕获工单ID格式(大写字母+连字符+数字):
- BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)" - if [[ $BRANCH_NAME =~ /([A-Z]+-[0-9]+) ]]; then TICKET_NAME="${BASH_REMATCH[1]}" fi
这种方式灵活性高,只要工单ID是字母-数字的格式就能匹配,不受分支前缀(如fix/、feature/)和后续描述的影响。
方法2:使用sed命令
通过sed的正则替换提取目标内容:
- BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)" - TICKET_NAME=$(echo "$BRANCH_NAME" | sed -E 's/.*\/([A-Z]+-[0-9]+)-.*/\1/')
该命令会自动忽略分支前缀,捕获/后符合字母-数字格式的部分,并剔除后续的描述内容。
方法3:使用awk分割拼接
如果工单ID固定是前缀-数字的两段格式,可以通过awk两次分割后拼接:
- BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)" - TICKET_NAME=$(echo "$BRANCH_NAME" | awk -F'/' '{print $2}' | awk -F'-' '{print $1"-"$2}')
先按/分割取分支的后半段,再按-分割取前两段拼接成工单ID。
内容的提问来源于stack exchange,提问作者Crocsx
相关产品推荐
相关产品推荐

