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: Rodrigo Boechat
Subject: Re: [shell-script] Pegar apenas a URL
Date: Thu, 29 Sep 2011 11:33:58 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20110906 Thunderbird/6.0.2

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]



reply via email to

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