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

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

Pesquisa no SED


From: Cristiano Ferrari
Subject: Pesquisa no SED
Date: Sat, 05 Jan 2008 03:13:34 -0000
User-agent: eGroups-EW/0.82

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



reply via email to

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