Eu tenho isso
$ cat test.sh
echo "https://bitbucket.dev.global.server.com/scm/xyz/abd.git"
echo "ssh://[email protected]:6699/xyz/abc.git"
echo "http://bitbucket.dev.global.server.com/abc"
echo "ssh://[email protected]/xyz/abc"
echo "http://bitbucket.dev.global.server.com"
echo "ssh://[email protected]/xyz/abc.git"
Quero um comando de uma linha (de preferência o comando sed) que extraia o nome do servidor da URL. por exemplo
bitbucket.dev.global.server.com
Eu tentei isso, mas não funciona
$ ./test.sh | sed 's/\(\/\/\|\@\)/&\n/;s/.*\n//;s/\(\:\|\/\)/\n&/;s/\n.*//'
bitbucket.dev.global.server.com
[email protected]
bitbucket.dev.global.server.com
[email protected]
bitbucket.dev.global.server.com
[email protected]
Ainda tem o usuário e o símbolo @. Como fazer isso?
Já que você solicitou uma
sed
frase de efeito, você pode tentar isto:que produz isto:
Explicação:
Tente isto, usando
perl
ased
sintaxe:A expressão regular corresponde ao seguinte:
.*
://
(?:
\w+
@
)?
(
[\w.]+
)
/?
.*
ou com
GNU grep
noPCRE
modo:A expressão regular corresponde ao seguinte:
://
(?:
\w+
@
)?
\K
K
ept) como uma alternativa mais curta ao uso de uma asserção look-behind: look arounds e Suporte de \K em regex[\w.]+
(?>
=/
)?
Rendimentos:
Você pode fazer isso:
Explicação:
/
no final para ter um formato consistentegrep
extraímos o padrão de/
/
/
/
/
/
personagens