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: Wed, 28 Sep 2011 21:06:46 -0300

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]



reply via email to

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