shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Pesquisa no SED


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Pesquisa no SED
Date: Mon, 7 Jan 2008 11:02:33 -0200

Cristiano.
prometo dar uma olhada no seu problema mas ja adianto uma coisa:
existem muitas maneiras de fazer o que vc quer. os algoritmos para
isso vão dos mais simples como procurar o nome exato a coisas bizarras
e complexas tipo que o google utiliza.
eu partiria do seguinte ponto: eu tenho um nome

Cristiano Ferrari da Silva

eu tenho 4 palavras, sendo que uma delas é eu posso 'descartar', no caso o 'da'.

fico com 3 palavras.

Vou procurar assim

/Cristiano Ferrari da Silva/

não encontrei?

/Cristiano/ || /Ferrari/ || /Silva/

a cada registro encontrado eu faço uma pontuação (ranking) da segunte forma

5 pontos para cada nome/sobrenome
2 para cada inicial encontrada ( se não tem Ferrari mas tem F. )

então eu mostro os resultados ordenados pela pontuação. perceba q eu
posso usar, como desempate, o 'da' que eu ignorei. acho importante
mostrar mais de um resultado (ou todos com mais de x pontos se tiver
mais de 2 resultados) pois em algum momento vc vai ter q refinar esse
algoritmo.



On 1/5/08, Cristiano Ferrari <address@hidden> wrote:
>
>
>
>
>
>
> Salve lista, boa madrugada!
>
> Seguinte...
>
> Estou com um pepino nas mãos e estou quase resolvendo-o com um shell
> script.
>
> A história: a empresa resolveu re-ativar uma região comercial há muito
> abandonada e me pediu um levantamento das vendas que ocorreram no
> passado, para que o novo vendedor pudesse visitar os antigos clientes.
> Levantamento feito, cheguei a um número de exatos 307 clientes.
>
> O problema: o cadastro deste 307 clientes não tem mais nada além de
> nome e CPF. Não tem endereço, telefone, celular, nada que permita ao
> cara contatá-los.
>
> O pepino: Pesquisar na internet, nos sites de listas telefônicas, os
> benditos 307 nomes e apresentar ao cara uma listagem com as informações.
>
> A idéia(thanks God for the linux): Criar um script que, à partir de
> uma lista com o nome das 307 pequenas crianças, poste uma consulta em
> um determinado website (www.telelistas.net), trate os dados e me crie
> uma listagem.
>
> A solução: O script tá quase pronto ( http://pastebin.com/f7d4ec93f ).
> Meio tosco, eu sei, mas para quem a pouco mais de 1 mês atrás só
> conhecia sed/awk de nome, tá lindão!
>
> A dúvida: Olhem o texto do script, na linha marcada de amarelo:
>
> sed -n "/$NOME2/,+1p"
>
> Este compando me retorna a linha com o nome do cidadão ($NOME2) e a
> linha seguinte, que devidamente tratada à partir do dump da página de
> pesquisa do site, me dá o endereço.
>
> A questão é que este comando casa apenas o que for **exatamente**
> igual ao nome que está na listagem, mas alguns nomes podem ter sido
> abreviados no meu cadastro. Por exemplo, um "José Aparecido da Silva",
> pode estar na minha listagem como "José A. da Silva" ou apenas "José
> da Silva". Ao postar a consulta no site, ele automaticamente retornara
> tudo o que tiver "José" "Aparecido [ou A.]" e "da Silva".
>
> Mas, ao construir minha tabela, só vou listar o que casar exatamente,
> devido ao comando acima.
>
> Pergunto: como eu poderia reescrever este comando para que ele pegasse
> o conteúdo da variável $NOME2 e casasse com a linha que tivesse **pelo
> menos 2 de cada um** dos nomes nela listados (e separados por espaço).
>
> Por exemplo, se o conteúdo de $NOME2 for "José Carlos Cardoso", que
> ele liste todas as linhas que casarem com:
>
> José Carlos Cardoso
> Carlos José Cardoso
> Cardoso José Carlos
> Cardoso Carlos José
> José Cardoso
>
> Preciso disso, pois se no meu cadastro o cara estiver apenas como
> "José Cardoso" ou "José C. Cardoso", por exemplo, o resultado do
> telelistas será listado, mesmo que lá estiver completo.
>
> Desculpem o jornalzão...
>
> Vou dormir que tá tarde.
>
> Abraços...
>
> Cristiano Ferrari
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

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