Ante todo disculparme, ya que no me he presentado antes. Estoy empezando Perl, sé programar algo de
shell y lo básico en Ruby, y Perl, lo mínimo. Tengo que hacer un
parser de
logs específico, en el que necesito pasar lo que
parseo a un
csv.
1º Empezar a leer un fichero línea a línea.
2º Encontrar un
timestamp y convertirlo a un formato más ameno y guardarlo en un
array3º Continuar hasta encontrar una línea que empiece por freeMemory.value y guardarlo en un
array.
4º Continuar hasta encontrar una línea que empiece por totalMemory.value y guardarlo en un
array.
5º Continuar leyendo y ver si puedo encontrar totalMemory.value o freeMemory.value antes de ver un
timestamp; si no lo encuentro entonces, volver al punto 2.
6º Guardar la información en un
csv.
Antes de nada, quiero decir que no pido que me hagan los deberes, pero sí una pequeña orientación en cómo hacerlo e incluso algún ejemplo que pueda ayudarme.
Ejemplo del texto a procesar:
http://pastebin.com/m3b01ddfcEl caso es que debo restar totalMemory.value - freeMemory.value (como podéis ver, entre
timestamp y
timestamp hay 4 líneas que hacen referencia a freeMemory y totalMemory (en el orden que lo digo). Encuentro freeMemory, encuentro totalMemory y hago la resta (totalMemory - freeMemory), ahora repito esto hasta encontrar el
timestamp. En este fichero de
log es así, pero si obtengo el
log de otros servidores tienen 2 líneas solo entre
timestamp y
timestamp (1 de freeMemory y otra de totalMemory).
El
csv quedaría algo similar a esto:
timestamp_personalizado;resultado_resta_OC4J1;resultado_resta_OC4J2 (si en el log hubiese 4 entradas)
Using text Syntax Highlighting
23-02-2010 14:00;234000;220000
23-02-2010 14:05;223000;300000
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Espero haberme explicado.
Gracias.