使用sed提取环境变量中分支名的首个数字序列
用sed提取分支名中的PROJ编号
没问题,我来帮你搞定这个需求!要从分支名feature/PROJ-12233-some-other-text-potential-12里精准提取出12233,用sed可以轻松实现,具体方案如下:
核心命令
假设存储分支名的环境变量名为BRANCH_NAME,执行这条命令就能直接得到目标数字:
echo "$BRANCH_NAME" | sed -E 's/.*PROJ-([0-9]+)-.*/\1/'
命令拆解
我给你拆解开每个部分的作用,方便你理解和按需调整:
-E:启用扩展正则表达式模式,这样不用对捕获括号()做转义,写起来更简洁直观s/.*PROJ-([0-9]+)-.*/\1/:这是sed的核心替换规则,细分为:.*PROJ-:贪婪匹配从字符串开头到PROJ-的所有内容,确保定位到目标数字的前缀([0-9]+):用括号标记一个捕获组,匹配并留存一个或多个连续数字(也就是我们要的12233)-.*:匹配目标数字后面的-及所有后续内容\1:将整个字符串替换为第一个捕获组的内容,也就是我们需要提取的数字
测试示例
如果要直接验证效果,可以运行这段代码:
BRANCH_NAME="feature/PROJ-12233-some-other-text-potential-12" echo "$BRANCH_NAME" | sed -E 's/.*PROJ-([0-9]+)-.*/\1/'
执行后会输出:
12233
补充:关于grep的小说明
其实grep也能实现这个需求,只是需要用到特定选项:echo "$BRANCH_NAME" | grep -oP 'PROJ-\K[0-9]+',不过既然你需要sed方案,上面的命令完全能满足你的要求啦。
内容的提问来源于stack exchange,提问作者Sammy
相关产品推荐
相关产品推荐

