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 12:28:39 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20110906 Thunderbird/6.0.2

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





reply via email to

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