You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Git克隆URL中提取服务器名称(Sed命令实现)

提取URL中的服务器名称(Sed命令实现)

场景与需求

现有test.sh脚本内容如下:

$ cat test.sh
echo "https://bitbucket.dev.global.server.com/scm/xyz/abd.git"
echo "ssh://git@bitbucket.dev.global.server.com:6699/xyz/abc.git"
echo "http://bitbucket.dev.global.server.com/abc"
echo "ssh://user@bitbucket.dev.global.server.com/xyz/abc"
echo "http://bitbucket.dev.global.server.com"
echo "ssh://user@bitbucket.dev.global.server.com/xyz/abc.git"

需要一条单行命令(优先使用Sed)从这些URL中提取服务器名称,预期输出:

bitbucket.dev.global.server.com

尝试过的命令及问题

执行以下命令后,输出仍保留了用户名和@符号:

$ ./test.sh | sed 's/\(\/\/\|\@\)/&\n/;s/.*\n//;s/\(\:\|\/\)/\n&/;s/\n.*//'
bitbucket.dev.global.server.com
git@bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
user@bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
user@bitbucket.dev.global.server.com

解决方案

使用以下Sed命令即可实现需求:

./test.sh | sed -E 's/.*(ssh:\/\/|https?:\/\/|@)([^:@\/]+).*/\2/'

命令说明

  • -E:启用扩展正则表达式,减少转义符的使用
  • .*(ssh:\/\/|https?:\/\/|@):匹配URL开头到ssh://、http:///https://或@的所有内容
  • ([^:@\/]+):捕获服务器名称,匹配除:、@、/之外的所有字符,这正是目标服务器域名
  • .*:匹配服务器名称之后的剩余内容
  • \2:将整行替换为第二个捕获组的内容,即提取到的服务器名称

执行后输出:

bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
bitbucket.dev.global.server.com
bitbucket.dev.global.server.com

内容的提问来源于stack exchange,提问作者Ramanan T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:37:33