[eside-ghost] optimización de shell scripts
Saritar
saritar en telefonica.net
Mar Mar 27 18:10:15 CEST 2007
Buenas,
Tengo un problemilla del que no sé muy bien cómo salir. Necesito hacer un
shell script en bash que procese un archivo de log de Apache de 20 MB,
comprimido o no, en el que cada línea contiene una IP, la URL, hora de
acceso etc y hay que sacar un listado por pantalla no ordenado de cada IP
con el número de accesos etc etc
Mi duda es la siguiente, alguien sabe cómo se puede optimizar un script de
manera que el tiempo de procesamiento sea aceptable?
Es decir, cómo se pueden utilizar óptimamente awk, grep, cut etc para
procesar un fichero tan grande o alguna estructura de almacenamiento de
memoria "eficaz".
Sin complicarme nada la vida, es decir de la manera más guarra tarda como 20
minutos y tiene que ser bastante más rápido (al final del e-mail he pegado
una parte del script)
Cualquier tipo de consejo, tutorial o ayuda por pequeño que parezca se
agradecerá infinitamente.
Eskerrik asko!!!
------------------------------------------------------------------inicio
script
#!/bin/bash
if [ $# -ne 1 ]
then
echo "error, el número de parametros es incorrecto"
else
if [ -f $1 ]
then
echo Hora Inicio `date | cut -f4 -d" "` > horainicio.txt
# LISTA_IPS=`zcat $1 | cut -f1 -d"-"| sort -u`
# LISTA_IPS=`zcat $1 | awk -F- '{print $1}'| sort -u`
LISTA_IPS=`gzip -cd $1 | awk -F- '{print $1}' | sort -u`
for i in $LISTA_IPS
do
NUM_ENTRADAS=`gzip -cd $1 | grep -c $i`
echo $i -- $NUM_ENTRADAS
done
echo Hora Fin `date | cut -f4 -d" "` > horafin.txt
else
echo "error al cargar el archivo"
fi
fi
--
El hijo de Bill Gates fue por causa de UN FALLO DE PROTECCION GENERAL
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20070327/4835484e/attachment-0001.htm
Más información sobre la lista de distribución eside-ghost