shell-script-pt
[Top][All Lists]
Advanced

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

Re: [shell-script] Pegar apenas a URL


From: Fernando Mercês
Subject: Re: [shell-script] Pegar apenas a URL
Date: Thu, 29 Sep 2011 12:59:31 -0300

Modifiquei para pegar qualquer coisa, mas ainda dá problema se tiver um
subdomínio do site com o domínio pai do país no fim (.br, .uk, .jp etc):

$ echo http://nada.mentebinaria.com | cut -f3 -d'/' | rev | cut -d'.' -f-3 |
rev | sed 's/\([a-zA-Z0-9]*\.\)\([a-zA-Z0-9]*\.[a-zA-Z].\.*\)/\2/'
mentebinaria.com

$ echo http://nada.mentebinaria.com.br | cut -f3 -d'/' | rev | cut -d'.'
-f-3 | rev | sed 's/\([a-zA-Z0-9]*\.\)\([a-zA-Z0-9]*\.[a-zA-Z].\.*\)/\2/'
com.br

Alguma ideia?

Abraço!

Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
softwarelivre-rj.org
@MenteBinaria
------------------------------------
Participe do I Hack'n Rio
                 hacknrio.org
------------------------------------


2011/9/29 Fernando Mercês <address@hidden>

> Rodrigo, eu me expressei mal. O que queria dizer é se teria como o comando
> ficar genérico  (.net, .org etc). De fato, acho que o autor da thread já
> resolveu o problema dele. Só estou continuando essa thread como desafio
> mesmo. :)
>
> Abração!
>
> Att,
>
> Fernando Mercês
> Linux Registered User #432779
> www.mentebinaria.com.br
> softwarelivre-rj.org
> @MenteBinaria
> ------------------------------------
> Participe do I Hack'n Rio
>                  hacknrio.org
> ------------------------------------
>
>
> 2011/9/29 Rodrigo Boechat <address@hidden>
>
>> **
>>
>>
>> Obrigado. :)
>>
>> Beleza. Atualizei o PasteBin.
>>
>> Abração!
>>
>> Em Qui 29 Set 2011 12:04:05 BRT, Fernando Mercês escreveu:
>>
>> > Belo trabalho! :)
>> >
>> > Muito legal usar o rev aí.
>> >
>> > Daria pra adaptar pra funcionar com endereços do tipo "
>> http://www.linux.net";
>> > ? Acho que só falta isso pra ficar perfeito.
>> >
>> > Abração!
>> >
>> > Att,
>> >
>> > Fernando Mercês
>> > Linux Registered User #432779
>> > www.mentebinaria.com.br
>> > softwarelivre-rj.org
>> > @MenteBinaria
>> > ------------------------------------
>> > Participe do I Hack'n Rio
>> > hacknrio.org
>> > ------------------------------------
>> >
>> >
>> > 2011/9/29 Rodrigo Boechat<address@hidden>
>> >
>> >> **
>> >>
>> >>
>> >> Entendi. Boa colocação.
>> >> Eu segui modelo do exemplo inicial em que todas as urls possuíam
>> "www.".
>> >> No caso o que gerou o erro foi meu segundo cut, que quando a linha não
>> >> possuir "www." deveria ser realizado com a opção "-f1-".
>> >>
>> >> Bem. Consegui arrumar o cut usando o esquema com o rev.
>> >> http://pastebin.com/Fa4XYqz2
>> >>
>> >> Aqui deu certo para mim.
>> >> O resultado é o esperado; acredito.
>> >>
>> >> Espero finalmente ter ajudado. :)
>> >> Abração!
>> >>
>> >> Em 28-09-2011 21:06, Fernando Mercês escreveu:
>> >>
>> >>> Rodrigo, acho que o caminho é esse. Mas ainda não tá 100%. Veja só:
>> >>>
>> >>> $ echo http://unix.com | cut -d'.' -f2- | sed
>> >>> 's/\([a-zA-Z0-9]*\.\)\([a-zA-Z0-9]*\.co.\.*\)/\2/'
>> >>> com
>> >>>
>> >>> Tem que se levar o número de pontos (.) na URL em consideração, para
>> >> saber
>> >>> se estamos tratando de um subdomínio ou não. Eu acabei fazendo uma
>> função
>> >>> que, parece, resolve o problema [1]. Pelo menos com os meus testes
>> aqui,
>> >> deu
>> >>> certo:
>> >>>
>> >>> $ for i in $(cat urls.txt); do echo -n "$i -> "; ./url.sh $i; done
>> >>> http://www.globo.com -> globo.com
>> >>> http://www.globo.com/ -> globo.com
>> >>> https://www.globo.com/ -> globo.com
>> >>> http://globo.com -> globo.com
>> >>> http://globo.com/ -> globo.com
>> >>> http://blog.globo.com/ -> globo.com
>> >>> http://blog.globo.com -> globo.com
>> >>> http://blog.globo.com.br -> globo.com.br
>> >>> http://blog.globo.com.br/testes/lalala/html/oi.html -> globo.com.br
>> >>> http://www.globo.com/asp.php -> globo.com
>> >>> http://www.unix.com/lele/lili -> unix.com
>> >>> http://unix.com/nada -> unix.com
>> >>> http://mail.unix.com -> unix.com
>> >>>
>> >>> [1] http://pastebin.com/KeLmaMzt
>> >>>
>> >>> Att,
>> >>>
>> >>> Fernando Mercês
>> >>> Linux Registered User #432779
>> >>> www.mentebinaria.com.br
>> >>> softwarelivre-rj.org
>> >>> @MenteBinaria
>> >>> ------------------------------------
>> >>> Participe do I Hack'n Rio
>> >>> hacknrio.org
>> >>> ------------------------------------
>> >>>
>> >>>
>> >>> 2011/9/28 Rodrigo Boechat<address@hidden>
>> >>>
>> >>>> **
>> >>>>
>> >>>>
>> >>>> Bem. Eu cheguei a isso:
>> >>>>
>> >>>> arquivo="$HOME/teste.txt"
>> >>>>
>> >>>> cat ->> "$arquivo"<<EOF
>> >>>>
>> >>>>
>> >>>>
>> >>
>> http://www.unix.com/shell-programming-scripting/36565-exit-shell-script.html
>> >>>> http://www.bla.com.br/ble/bli.htm
>> >>>> http://www.cla.com.br/cle/cli.htm
>> >>>> http://www.sub1.dla.com/dle/dli.htm
>> >>>> http://www.sub2.ela.co.uk/ele/eli.htm
>> >>>> EOF
>> >>>>
>> >>>> cut -f3 -d'/' $arquivo | cut -d'.' -f2- | sed
>> >>>> 's/\([a-zA-Z0-9]*\.\)\([a-zA-Z0-9]*\.co.\.*\)/\2/'
>> >>>>
>> >>>> Explicando o cut:
>> >>>> -d = seta o delimitador de campos
>> >>>> -f = seta quais campos você vai pegar :: 2- significa do segundo em
>> >>>> diante, lembrando que o primeiro campo é o zero. Colocando o menos na
>> >>>> frente do dois [-f-2], você obtém do zero até o segundo.
>> >>>>
>> >>>> Explicando o sed:
>> >>>> s/// = substituição
>> >>>>
>> >>>> \( e \) = criam separações endereçadas de 1 a 9 [se não me engano]
>> num
>> >>>> bloco de padrao que você esteja procurando. Então eu criei duas
>> >>>> separações '\([a-zA-Z0-9]*\.\)' e '\([a-zA-Z0-9]*\.co.\.*\)'.
>> >>>> A primeira busca por qualquer conjunto de letras e números misturados
>> >>>> terminados por ponto.
>> >>>> A segunda busca por qualquer conjunto de letras e números misturados
>> >>>> terminados por ".co*.*".
>> >>>> Obs: Usei co*. porque me lembrei que o domínio inglês, por exemplo é
>> >>>> "co.uk".
>> >>>> Obs2: O povo não gosta de usar o ponto em expressões, portanto a
>> poarte
>> >>>> "[a-zA-Z0-9]*\.co.\.*" poderia, também, ser escrita assim:
>> >>>> "[a-zA-Z0-9]*\.co[a-z]\.*".
>> >>>>
>> >>>> Por fim, ao invés de substituir o comando \2\ diz para o s///
>> escrever o
>> >>>> conteúdo da segunda separação, no caso, tudo que o
>> >>>> "[a-zA-Z0-9]*\.co.\.*" abranger.
>> >>>>
>> >>>> Tentei ser o mais claro possível. Se eu me enrolei em alguma
>> explicação
>> >>>> eu mesmo errei alguma coisa, sintam-se à vontade para corrigir.
>> >>>>
>> >>>> Espero ter ajudado.
>> >>>> Rodrigo Boechat
>> >>>>
>> >>>> Em Qua 28 Set 2011 18:55:31 BRT, Fernando Mercês escreveu:
>> >>>>
>> >>>>> Mas e como pegar o domínio independente da URL conter um subdomínio
>> ou
>> >>>>> não?
>> >>>>>
>> >>>>> Por exemplo, para todas as entradas abaixo, a saída deveria ser
>> >>>>> somente "unix.com":
>> >>>>>
>> >>>>> www.unix.com/lele/lili
>> >>>>> unix.com/nada
>> >>>>> mail.unix.com
>> >>>>>
>> >>>>> Eu tentei com o sed aqui e não consegui. Seria uma boa função para
>> >>>>> somar às funções zz. :)
>> >>>>>
>> >>>>> Abraços.
>> >>>>>
>> >>>>> Att,
>> >>>>>
>> >>>>> Fernando Mercês
>> >>>>> Linux Registered User #432779
>> >>>>> www.mentebinaria.com.br
>> >>>>> softwarelivre-rj.org
>> >>>>> @MenteBinaria
>> >>>>> ------------------------------------
>> >>>>> Participe do I Hack'n Rio
>> >>>>> hacknrio.org
>> >>>>> ------------------------------------
>> >>>>>
>> >>>>> 2011/9/28 Rodolpho Costa Stach<address@hidden
>> >>>>> <mailto:dukercs%40gmail.com>>:
>> >>>>>> hum vou estudar :D $man cut
>> >>>>>> vlw cara
>> >>>>>>
>> >>>>>> por enquanto o script tá assim
>> >>>>>>
>> >>>>>>
>> >>>>>> # Script para adicionar site à lista branca
>> >>>>>> # Criado em 28/09/2011
>> >>>>>> # Autor: Rodolpho Costa Stach
>> >>>>>> #!/bin/bash
>> >>>>>> versao="1.0.1b"
>> >>>>>>
>> >>>>>> fpath="/etc/squiddir/listabranca.txt"
>> >>>>>>
>> >>>>>> testapath(){
>> >>>>>> if [ -e $fpath ]; then
>> >>>>>> args
>> >>>>>> else
>> >>>>>> echo -e "\e[31;1m ERRO: "
>> >>>>>> echo -e "\e[37;1m O arquivo de lista não foi localizado em
>> >>>>> $fpath."
>> >>>>>> echo -e "\e[37;1m Use $0 --novalista para definir o novo local do
>> >>>>>> arquivo"
>> >>>>>> sair
>> >>>>>> fi
>> >>>>>> }
>> >>>>>>
>> >>>>>> sair(){
>> >>>>>> exit 1
>> >>>>>> }
>> >>>>>>
>> >>>>>> args(){
>> >>>>>> if [ "$1" = "" ];then
>> >>>>>> echo -e "\e[31;1m ERRO: "
>> >>>>>> echo -e "\e[37;1m Use $0 + domínio do site a ser liberado."
>> >>>>>> sair
>> >>>>>> else
>> >>>>>> contar
>> >>>>>> fi
>> >>>>>> }
>> >>>>>>
>> >>>>>> contar(){
>> >>>>>> count=$(grep -c $1 $fpath)
>> >>>>>> if [ $count>= 1 ]; then
>> >>>>>> echo -e "\e[31;1m ERRO: "
>> >>>>>> echo -e "\e[37;1m Este domínio já existe cadastrado"
>> >>>>>> else
>> >>>>>> echo $1>> $fpath
>> >>>>>> fi
>> >>>>>> }
>> >>>>>> ajuda(){
>> >>>>>> echo -e "\e[40;32;1mAjuda"
>> >>>>>> echo -e "\e[40;37;1mUse o $0 para adicionar somente o domínio à
>> >>>>>> lista branca de sites."
>> >>>>>> echo -e "\e[40;31mOpções: "
>> >>>>>> echo -e -n "\e[40;32;1m--help --ajuda -h "
>> >>>>>> echo -e "\e[40;37;1mExibe essa tela de ajuda"
>> >>>>>> echo -e -n "\e[40;32;1m--novalista "
>> >>>>>> echo -e "\e[40;37;1mAltera o arquivo da lista branca para o
>> >>>>> arquivo
>> >>>>>> informado"
>> >>>>>> echo -e "\e[40;31;1mUSE: $0 --novalista
>> >>>>>> /caminho/completo/para/a/novalista.txt"
>> >>>>>> echo -e ""
>> >>>>>> }
>> >>>>>> case "$1" in
>> >>>>>> --help|-h|--ajuda)
>> >>>>>> ajuda ;;
>> >>>>>> --novalista)
>> >>>>>> echo "Ainda irei estudar como fazer isso :D "
>> >>>>>> echo "Você entrou com o caminho"
>> >>>>>> ;;
>> >>>>>> *)
>> >>>>>> testapath
>> >>>>>> ;;
>> >>>>>> esac
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> Em 28 de setembro de 2011 17:49, Moacir Souza
>> >>>>> <address@hidden<mailto:moacir.souza%40gmail.com>>escreveu:
>> >>>>>>> **
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Outro cut..
>> >>>>>>>
>> >>>>>>> $ cut -d "." -f 2-
>> >>>>>>>
>> >>>>>>> 2011/9/28 Rodolpho Costa Stach<address@hidden
>> >>>>> <mailto:dukercs%40gmail.com>>:
>> >>>>>>>> Sim mas com esse delimitador está saindo o www. tem como tirar
>> ele ?
>> >>>>>>>>
>> >>>>>>>> Em 28 de setembro de 2011 17:10, Marcelo Andrade
>> >>>>> <address@hidden<mailto:mfandrade%40gmail.com>
>> >>>>>>>> escreveu:
>> >>>>>>>>
>> >>>>>>>>> **
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>> 2011/9/28 Rodolpho Costa Stach<address@hidden
>> >>>>> <mailto:dukercs%40gmail.com>>
>> >>>>>>>>>> Gente estou ainda criando o danado do script para adicionar
>> >>>>> sites em
>> >>>>>>> uma
>> >>>>>>>>>> lista branca nisso pensei em controle de erro e gostaria de
>> >>>>> caso eu
>> >>>>>>>>> coloque
>> >>>>>>>>>> um site como
>> >>>>>>>>>>
>> >>>>
>> >>
>> http://www.unix.com/shell-programming-scripting/36565-exit-shell-script.htmlem
>> >>>>>>>>>> uma variável que eu pegue só o
>> >>>>>>>>>> unix.com ou se fosse .com.br pegasse só o unix.com.br para que
>> >>>> eu
>> >>>>>>> possa
>> >>>>>>>>>> testar se esse domínio já não existe.
>> >>>>>>>>> Um cut -f3 -d'/' não resolve?
>> >>>>>>>>>
>> >>>>>>>>> Atts.
>> >>>>>>>>>
>> >>>>>>>>> --
>> >>>>>>>>> MARCELO F ANDRADE
>> >>>>>>>>> Belem, Amazonia, Brazil
>> >>>>>>>>>
>> >>>>>>>>> "I took the red pill"
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>> [As partes desta mensagem que não continham texto foram
>> removidas]
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> ------------------------------------
>> >>>>>>>> ----------------------------------------------------------
>> >>>>>>>> Esta lista não admite a abordagem de outras liguagens de
>> >>>> programação,
>> >>>>>>> como perl, C etc. Quem insistir em não seguir esta regra será
>> >>>>> moderado sem
>> >>>>>>> prévio aviso.
>> >>>>>>>> ----------------------------------------------------------
>> >>>>>>>> Sair da lista: address@hidden
>> >>>>> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
>> >>>>>>>> ----------------------------------------------------------
>> >>>>>>>> Esta lista é moderada de acordo com o previsto em
>> >>>>>>> http://www.listas-discussao.cjb.net
>> >>>>>>>> ----------------------------------------------------------
>> >>>>>>>> Servidor Newsgroup da lista: news.gmane.org
>> >>>>>>>> Grupo: gmane.org.user-groups.programming.shell.brazil
>> >>>>>>>>
>> >>>>>>>> Links do Yahoo! Grupos
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>> --
>> >>>>>>> ==========================================
>> >>>>>>> Moacir da Cruz Souza Filho
>> >>>>>>>
>> >>>>>>> Analista de Sistemas: Suporte Unix Avançado
>> >>>>>>> Mestrando em Ciências da Computação
>> >>>>>>> Bacharel em Engenharia da Computação
>> >>>>>>> Técnico em Eletrônica
>> >>>>>>> Linux user #449600
>> >>>>>>> ==========================================
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>> [As partes desta mensagem que não continham texto foram removidas]
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> ------------------------------------
>> >>>>>>
>> >>>>>> ----------------------------------------------------------
>> >>>>>> Esta lista não admite a abordagem de outras liguagens de
>> >>>>> programação, como perl, C etc. Quem insistir em não seguir esta
>> regra
>> >>>>> será moderado sem prévio aviso.
>> >>>>>> ----------------------------------------------------------
>> >>>>>> Sair da lista: address@hidden
>> >>>>> <mailto:shell-script-unsubscribe%40yahoogrupos.com.br>
>> >>>>>> ----------------------------------------------------------
>> >>>>>> Esta lista é moderada de acordo com o previsto em
>> >>>>> http://www.listas-discussao.cjb.net
>> >>>>>> ----------------------------------------------------------
>> >>>>>> Servidor Newsgroup da lista: news.gmane.org
>> >>>>>> Grupo: gmane.org.user-groups.programming.shell.brazil
>> >>>>>>
>> >>>>>> Links do Yahoo! Grupos
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>
>> >>> [As partes desta mensagem que não continham texto foram removidas]
>> >>>
>> >>>
>> >>>
>> >>> ------------------------------------
>> >>>
>> >>> ----------------------------------------------------------
>> >>> Esta lista não admite a abordagem de outras liguagens de programação,
>> >> como perl, C etc. Quem insistir em não seguir esta regra será moderado
>> sem
>> >> prévio aviso.
>> >>> ----------------------------------------------------------
>> >>> Sair da lista: address@hidden
>> >>> ----------------------------------------------------------
>> >>> Esta lista é moderada de acordo com o previsto em
>> >> http://www.listas-discussao.cjb.net
>> >>> ----------------------------------------------------------
>> >>> Servidor Newsgroup da lista: news.gmane.org
>> >>> Grupo: gmane.org.user-groups.programming.shell.brazil
>> >>>
>> >>> Links do Yahoo! Grupos
>> >>>
>> >>>
>> >>>
>> >>
>> >> [As partes desta mensagem que não continham texto foram removidas]
>> >>
>> >>
>> >>
>> >
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> >
>> >
>> > ------------------------------------
>> >
>> > ----------------------------------------------------------
>> > Esta lista não admite a abordagem de outras liguagens de programação,
>> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>> prévio aviso.
>> > ----------------------------------------------------------
>> > Sair da lista: address@hidden
>> > ----------------------------------------------------------
>> > Esta lista é moderada de acordo com o previsto em
>> http://www.listas-discussao.cjb.net
>> > ----------------------------------------------------------
>> > Servidor Newsgroup da lista: news.gmane.org
>> > Grupo: gmane.org.user-groups.programming.shell.brazil
>> >
>> > Links do Yahoo! Grupos
>> >
>> >
>> >
>>
>>  
>>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]