**
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]