Para remover tudo após o primeiro solitário (não o dobro) /
:
sed -r 's#([^/])/[^/].*##'
A expressão s#([^/])/[^/].*##
executará uma substituição usando a expressão regular ([^/])/[^/].*
. Isso corresponderá a qualquer caractere que não seja /
, seguido por um único /
(e outros caracteres no final da linha de entrada).
A substituição substitui a partida pelo personagem na frente do lone /
(que, de outra forma, seria substituído).
Testando no arquivo
http://example.com/folder/file.html
http://example.bar.com/folder/file.html
http://example.com:8080/folder/file.html
$ sed -r 's#([^/])/[^/].*##' file
http://example.com
http://example.bar.com
http://example.com:8080
Usando awk
:
$ awk -F'/' '{ print $1 "//" $3 }' file
http://example.com
http://example.bar.com
http://example.com:8080
Aqui, eu estou usando /
como um delimitador de campo, e então eu estou simplesmente escolhendo o primeiro e o terceiro campo e exibindo-os com a string //
intermediária.