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

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

Qual a forma mais eficiente para recuperar campos de um arquivo de texto


From: Lawrence Waclawiak
Subject: Qual a forma mais eficiente para recuperar campos de um arquivo de texto?
Date: Mon, 03 May 2010 17:51:01 -0300
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

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!




reply via email to

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