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

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

Re: [shell-script] Qual a forma mais eficiente para recuperar campos de


From: MrBiTs
Subject: Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?
Date: Mon, 03 May 2010 18:46:05 -0300
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9pre) Gecko/20100217 Lightning/1.0b1 Shredder/3.0.3pre

-----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 <address@hidden>
> 
>>
>>
>> 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 - address@hidden
..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-----


reply via email to

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