Maxwillian Miorim escreveu:
> On 7/17/07, Wendell Almeida <wendell@ctech.srv.br> wrote:
>> Necessito pegar uma url e apresentar somente o site:
>> URL
>>
http://www.itau.com.br/campanhas/bankline/lancamento/detecta_482x192.htm
>> https://itaubankline.itau.com.br:443
>> Resultado: SITE
>> http://www.itau.com.br
>> https://itaubankline.itau.com.br
>> Fiz a seguinte expressão regular para usar com o sed:
>> sed 's/\w\+:\/\/\(\w\+-\?\w*\.\)\+\w*//' arquivo_com_urls
>> O padrão casa substituindo o site:
>> /bankline/lancamento/detecta_482x192.htm
>> :443
>> Eu preciso negar isso. Obter o efeito contrário, ou seja, apresentar
>> somente o que casa com o padrão.
>> Tentei de várias formas e não consegui.
>> Parece que não é possível se ter um grupo dentro da lista ou uma
lista
>> dentro de outra.
>> Não consegui visualizar outra ER para os padrões de sites.
>> Será que tem uma ER melhor?
> É por isso que eu gosto do awk :)
> awk -F/ '{ printf("%s//%s\n",$1,$3); }' /arquivo/com/urls
> Work smarter, not harder ;)
Olá,
Esse awk não serve no caso de se ter uma porta, o correto seria: awk
-F[/:] '{ printf("%s://%s\n",$1,$4); }'
Com sed também dá: sed 's/\(.*\/\/[^\/\:]*\).*/\1/'
Com shell também: while read url; do proto="${url%%:*}";
site="${url#*://}"; site="${site%%[:/]*}"; echo "$proto://$site"; done
É uma questão de sabe o que quer e usar corretamente a ferramenta.
Veja que com qualquer outra linguagem é possível, depende do seu domínio
sobre a ferramenta ou linguagem.