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

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



Wendell Almeida escreveu:

É por isso que eu gosto do awk :)
awk -F/ '{ printf("%s//%s\n",$1,$3); }' /arquivo/com/urls
Work smarter, not harder ;)
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.
A expressão do sed falha no seguinte exemplo:
http://news.google.com.br/news/url?sa=t&ct=pt-BR_br/3-0-0&fp=4694732a9b439900&ei=YfqURr_jNpqkogKpzfB6&url=http%3A//www.otempo.com.br Com o awk ficou bem simples. E os ":" complementaram a ajuda do Maxwillian.
Realmente, foi um caso que eu não pensei, no qual há mais de um "//". O correto então seria:

sed 's/\([^\/\:]*\:\/\/[^\/\:]*\).*/\1/'

--
Atenciosamente,

          Junior Polegato

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



Reply to: