[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