mario oshiro
(usa Suse)
Enviado em 26/08/2008 - 14:34h
Desculpe-me, tentarei ser mais claro.
Meu processo eh o seguinte :
1o. Tenho um arquivo gigante, cerda de 1,5 milhao de registros. As linhas estao no formato abaixo :
para exemplificar, dei o nome do arquivo de veiculos :
AAA1234;CORSA;AZUL;2008
BBB1234;GOL;PRETO;1999
CCC1234;FIT;CINZA;2006
2o. Possuo mais tres arquivos ( filtro1, filtro2 e filtro3), cada arquivo contem apenas a placa do veículo que tambem pode ser muito grande, 300.000 placas por arquivo.
(filtro1 - Lista para enviar email de aviso )
AAA1234
CCC1234
www1234
(Filtro2 - Lista para enviar cartao por correio )
AAA1234
HHH1234
III234
(Filtro3 - Lista para fazer contato telefonico )
AAA1234
CCC1234
www1234
HHH1234
3o. Hoje meu script faz tres egrep consecutivos, gerando tres arquivos de saída diferentes, cada comando leva cerca de 5 minutos para ser processado :
egrep -f filtro1 veiculos > Lista1
egrep -f filtro2 veiculos > Lista2
egrep -f filtro3 veiculos > Lista3
Quero deixar este processo mais eficiente, fazendo este processo em um unico passo,
e em relacao ao 1o post avancei um pouco :
awk -f robo.awk ./veiculos
#robo.awk
BEGIN {
FS=";"
}
/AAA1234/{
print $0
}
Com o script acima, consigo filtrar os registro um veiculo, de placa 'AAA1234', porem minha lista esta em um arquivo separado do script awk.
Perguntas :
* Cosigo fazer algo parecido com o egrep, passar o arquivo de filtro na chamada do filto de bloco do awk ?
* Vcs acham que estou no caminho certo ?
Obrigado
Mario Oshiro