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: Tiago Peczenyj
Subject: Re: [shell-script] Qual a forma mais eficiente para recuperar campos de um arquivo de texto?
Date: Mon, 3 May 2010 18:04:30 -0300

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.


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!
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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