如何使用grep正确匹配以指定前缀开头的Git分支
失效原因
两个命令未达预期的核心原因如下:
git branch | grep ^dependabot/无匹配结果:git branch默认输出带格式标记:当前分支行首固定为*,其余分支行首固定为2个半角空格做缩进,所有分支名本身都不在整行的最起始位置。正则中的^是行首锚点,仅匹配整行第一个字符的位置,该位置只会是*或空格,自然无法匹配到后续位置才出现的dependabot/。git branch | grep dependabot/匹配到多余分支:第三个分支test-dependabot/test的名称中间包含dependabot/字符串,grep默认只要行内任意位置命中匹配规则就返回整行,因此会把这个前缀不符合要求的分支也筛选出来。
正确实现
基于grep管道的写法
正则兼容git branch的行首格式标记即可:
git branch | grep '^[* ] dependabot/'
该正则匹配行首第一个字符为*或半角空格、第二个字符为半角空格,后续紧接dependabot/的行,精准匹配分支名以dependabot/为前缀的场景,不会误匹配名称中间带dependabot/的分支。
更推荐的原生git写法
无需依赖grep管道,直接使用git自带的分支筛选能力,直接匹配分支名字段,不受终端输出格式变动影响,兼容性更好:
git branch --list 'dependabot/*'
内容的提问来源于stack exchange,提问作者Johnny Metz
相关产品推荐
相关产品推荐

