-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 05/03/2010 06:04 PM, Tiago Peczenyj wrote: > Para cada | e $( ) vc abre um subprocesso. > > Como vc faz isso durante MUITAS vezes o processo vai ser lento porem, se > dura menos de 1 segundo, eu nao acho isto lento IMHO. > > Se vc criar um script awk no lugar do script shell vc nao tera esse overhead > dependendo de como vc cria-lo.
Acho que usar o IFS do jeito certo (você está usando do jeito errado; está setando o IFS exatamente para o que ele já é na função corpo) é ainda mais rápido. Além disso, você grava no arquivo de saída variável por variável. Faça uma gravação de uma vez. Já que sabemos quantos e quais são os campos, talvez algo assim: http://pastebin.com/AChJJLd9 Aqui não deu nem um segundo para comer sua base. > > > 2010/5/3 Lawrence Waclawiak <[email protected]> > >> >> >> Boa tarde a todos, >> >> Desenvolvi um script para gerar o arquivo dhcpd.conf a partir de uma >> base de dados salva em arquivo de texto simples com cada maquina em uma >> linha e os campos separados por ;(ponto e virgula). >> O formato dessa base de dados é o seguinte: >> >> #nome;mac;local;so;gw;ip;status;comentario; >> >> pc-301;00:e0:7d:f4:c6:cb;Cobrança;Win_XP;10.10.48.1;10.10.48.20;Manutencao;; >> pc-302;00:1D:7d:83:fe:d1;Cobrança;Win_2000;;;Ativo;; >> pc-303;00:1f:c6:60:47:86;Cobrança;Win_XP;;;Ativo;; >> pc-304;00:1c:c0:43:62:b5;Cobrança;Win_XP;;;Ativo;; >> >> A base completa encontra-se em: >> http://pastebin.com/Hx7Bpjgj >> >> O script que criei utiliza o cut dentro de um for para recuperar os campos. >> >> Pc=$(echo $LINE |cut -d";" -f1) >> Mac=$(echo $LINE |cut -d";" -f2) >> Local=$(echo $LINE |cut -d";" -f3) >> So=$(echo $LINE |cut -d";" -f4) >> Gw=$(echo $LINE |cut -d";" -f5) >> Ip=$(echo $LINE |cut -d";" -f6) >> Status=$(echo $LINE |cut -d";" -f7) >> Coment=$(echo -e $LINE |cut -d";" -f8) >> >> O script completo encontra-se em: >> http://pastebin.com/xLLzMkKL >> >> A função que trata dessa separação é a função corpo(). >> >> Tudo funciona corretamente porém a maquina demora um pouco para >> processar toda a lista e montar o dhcpd.conf, gostaria de saber se >> alguém conhece uma forma mais eficiente de recuperar o valor desses >> campos que não seja o que eu utilizei nem o awk -F';' '{print $x}' pois >> esse é mais pesado ainda. >> A maquina que estou utilizando é bastante forte, um dell poweredge 1950 >> 8Gb de ram 2 processadores xeon quadcore de 2.8Ghz e memso assim para >> processar essa pequena base leva cerca de 600ms medidos com o comando time. >> >> Muito obrigado! >> >> >> > > > - -- Um abraço .0. MrBiTs - [email protected] ..0 GnuPG - http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB 000 http://www.mrbits.com.br -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iQEcBAEBCAAGBQJL30QdAAoJEG7IGPwrPKWrr+kIAIOw7JBccnG32ymbbE1V0P1L 5suDVIF1tCg9lLNO2R3hXsuUxpq2R9gkK193uoncKlYxH5wZVoJ2PIFxf43BU8CH 0fqw2i1PubaGpdMYJvU1IloYpr6i6i62ZZLcMt98QbIHXa2ubx/0a8dDQ1d6u2zR edLZNtxn3YY3y/1/lDMRRfAbx70Nj1n+Fb1MiYidMhIGBIkCtKKBns6Rpug8FSnQ oRXhFSVkJV4aoX6E4RhaYFTztv5pDV5Vre7SILGuMyDkvVSl4QSFwtMyxatawCCZ 4GMeCbEOYuOgmgKXykzky0fuOakzELlzDI1i93tcF+2mk0uRtw8h6qVD2YrWqpo= =2j/V -----END PGP SIGNATURE-----
