[eside-ghost] optimización de shell scripts

Pablo Garaizar Sagarminaga garaizar en eside.deusto.es
Mar Mar 27 19:06:35 CEST 2007


Aupa!

El Tue, 27 Mar 2007 18:10:15 +0200
Saritar <saritar en telefonica.net> comentaba:

El problema está aquí:

>     for i in $LISTA_IPS
>     do
>         NUM_ENTRADAS=`gzip -cd $1 | grep -c $i`
>         echo $i -- $NUM_ENTRADAS
>     done

Haces un gzip en cada vuelta del bucle, eso es inaceptable.

Soluciones:

1) Guarrilla: hacer el gzip a un fichero y trabajar con ese fichero:

gzip -cd $1 > /tmp/ficherogzip.$$ 	
# el $$ es tu PID, para no chocar con múltiples ejecuciones del script

for i in $LISTA_IPS
do
  NUM_ENTRADAS=`grep -c $i /tmp/ficherogzip.$$`
  echo $i -- $NUM_ENTRADAS
done

2) Guarra: volcar el fichero unzipeado a una variable y trabajar con
ella: FICHERO=`gzip -cd $1` y a pegarse con $FICHERO. Esto tiene la
ventaja de no trabajar con disco, pero la desventaja de que
probablemente pierdas los saltos de línea y los greps y awk's lo pasen
mal.

-- 
  Pablo Garaizar Sagarminaga
  ONTE (Oficina de Nuevas Tecnologías y Educación)
  Universidad de Deusto
  Avda. de las Universidades 24
  48007 Bilbao - Spain

  Phone:       +34-94-4139000 Ext 2980
  Fax:                  +34-94-4139101
  Web:     http://onte.eside.deusto.es


Más información sobre la lista de distribución eside-ghost