已能提取Git仓库名,如何用Shell命令提取项目名smat?
提取Git URL中的项目名(smat)
问题背景
你的Git URL为:
https://xcg5847@git.rz.bankenit.de/scm/smat/sma-mes-test.git
已经用以下命令成功提取仓库名sma-mes-test:
git config --local remote.origin.url | sed -n 's#.*/\([^.]*\)\.git#\1#p'
现在需要提取URL中的项目名smat,这里提供几个简单可行的方法:
解决方案
方法1:用sed正则提取
直接匹配URL中/scm/之后、下一个/之前的内容:
git config --local remote.origin.url | sed -n 's#.*/scm/\([^/]*\)/.*#\1#p'
原理:
.*匹配到/scm/为止的所有字符\([^/]*\)专门捕获/scm/后到下一个/之间的内容(也就是项目名)- 最后用
\1输出捕获到的内容
方法2:用awk按分隔符拆分(最直观)
把URL按/拆分成多个字段,直接取对应位置的字段:
git config --local remote.origin.url | awk -F '/' '{print $5}'
原理:
-F '/'指定用/作为分割符,原URL拆分后第5个字段就是smat
方法3:用dirname+basename分步提取
先去掉URL末尾的仓库名,再取剩余路径的最后一段:
git config --local remote.origin.url | dirname | basename
原理:
dirname会去掉URL最后一段(sma-mes-test.git),得到https://xcg5847@git.rz.bankenit.de/scm/smatbasename提取这个路径的最后一段,就是smat
内容的提问来源于stack exchange,提问作者Data Mastery
相关产品推荐
相关产品推荐

