我有一个字符串:http://user_name:user_password@example.com/gitproject.git
并且想在没有用户的情况下制作它并通过 -http://example.com/gitproject.git
IE
http://user_name:user_password@example.com/gitproject.git
至
http://example.com/gitproject.git
如何在 bash 中自动完成?
您可能安装的某些语言(例如 php 或 python)具有出色的 URL 解析工具。例如,php:
$url = parse_url("http://user_name:user_password@example.com/gitproject.git ");
return "$url[scheme]://" . $url['host'] . $url['path'];
但是,由于这不是您要求的,您仍然可以这样做sed
:
sed -r "s#(.*?://).*?@(.*)#\1\2#" <<<"http://user:pass@example.com/git"
这sed
应该有效:
s="http://user_name:user_password@example.com/gitproject.git"
sed 's~^\(.*//\)[^@]*@\(.*\)$~\1\2~' <<< "$s"
http://example.com/gitproject.git
使用纯 BASH
echo "${s/*@/http://}"
http://example.com/gitproject.git
纯粹的 bash 可能性
var='http://user_name:user_password@example.com/gitproject.git'
pat='(http://).*?@(.*)'
[[ $var =~ $pat ]]
echo "${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
http://example.com/gitproject.git
与sed
:
$ sed "s#//.*@#//#g" <<< "http://user_name:user_password@example.com/gitproject.git"
http://example.com/gitproject.git