[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Expresão regular para filtar URL



Maxwillian Miorim escreveu:
On 7/17/07, Junior Polegato - Linux <linux@juniorpolegato.com.br> wrote:
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.
max@max:/etc$ echo https://www.itau.com.br:443/campanhas/blablabla |
awk -F/ '{ printf("%s//%s\n",$1,$3); }'
https://www.itau.com.br:443
max@max:/etc$

Exato! O cara não quer que no resultado sai o número da porta:
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

Do jeito que você fez, o número da porta sai no resultado! ;-)

--
Atenciosamente,

          Junior Polegato

          Um peregrino de problemas; Um pergaminho de soluções!
          Página Profissional: http://www.juniorpolegato.com.br



Reply to: