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 <[EMAIL PROTECTED]> 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"
