0

我有一个字符串: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 中自动完成?

4

4 回答 4

2

您可能安装的某些语言(例如 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"
于 2013-10-04T13:56:49.047 回答
2

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
于 2013-10-04T13:59:36.947 回答
1

纯粹的 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
于 2013-10-04T14:13:14.663 回答
1

sed

$ sed "s#//.*@#//#g" <<< "http://user_name:user_password@example.com/gitproject.git"
http://example.com/gitproject.git
于 2013-10-04T13:56:44.600 回答