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:04:05 -0300

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]



reply via email to

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