[Ubuntu-BR] Alguma forma mais rápida para ler um arq texto sequencial em bash

hamacker sirhamacker em gmail.com
Sexta Outubro 21 16:14:49 UTC 2011


Ola pessoal,

Eu tenho uma rotina dentro dum batch que reformata e audita o que desejo no
arquivo de log do squid, porém a medida que o log do squid aumenta torna-se
insustentável o tempo para ler este arquivo. A rotina para ler um arquivo
texto é assim :
SQUIDLOG="/var/log/squid3/access.log"
FINISH=$(wc -l "$SQUIDLOG"|cut -d" " -f1)
STARTING=0
while read SQUID_LINHA ; do
  STARTING=$((STARTING+1))
  PERC=$((STARTING*100/$FINISH))
  PARAM_DATA_UNIXTIME=`echo $SQUID_LINHA|cut -d " " -f 1`
  blablabla....
done < $SQUIDLOG

Só que essa forma de ler linha-a-linha é muito lenta, alias o bash é muito
lento.
Fiz um teste de script removendo o conteúdo entre o while read...done, e
praticamente não houve diferença de tempo, o que dá a entender que a demora
é por conta do próprio laço.

Será que há algum outro algorítimo ou função que poderia usar para melhor a
performance ?



More information about the ubuntu-br mailing list