Hola, tengo que sacar estadísticas de unos logs generados con dmstool(oas). Son generados con dmstool -t JVM (cada 5 minutos). Para que os hagais una idea, los logs son de este formato: http://pastebin.com/VeMdVSHA

Necesito sacar el consumo de la memoria java de la que tiene asignada Xmx Xms. En algunos logs tengo 2 procesos java, por ello podéis comprobar que al final hago un if, para ver si tengo que hacer el map de 2 elementos o de 3 (fecha;resultado_proceso_java1;resultado_proceso_java2)

#!/usr/bin/env ruby
# encoding: UTF-8
#
#=======================================================================================
#
# FILE: heap_parser.rb
#
#
# DESCRIPTION: Parseo de logs generados con dmstool -t JVM a .csv
#
# OPTIONS: [nombre-fichero-metricas-dmstool]
# REQUIREMENTS: time
# AUTHOR: Koldo Oteo (), koldo.oteo1@gmail.com
# WEB: http://koteo.lacoctelera.net
# VERSION: 1.0.1
# CREATED: 16/03/2010
#=======================================================================================
#
require 'rubygems'
require 'time'

@freemem = /^freeMemory.value:\s(\d+)/
@totmem = /^totalMemory.value:\s(\d+)/
@date = /\w+\s\w+\s\d+\s\d+\:\d+\:\d+\s\w+\s\d+/

def dat_parse(line)
Time.parse(@line).strftime("%d-%m-%Y %H:%M:%S")
end

@results = Array.new

@logfile = File.open(ARGV[0])
@logfile.each_line do |x|
@line = x

case @line
when @date then @results << dat_parse(@line).strip
when @freemem then @fr = $1
when @totmem then @tot = $1
@results << @tot.to_i - @fr.to_i
end
end

# unimos fecha + resultado(totalMemory - freeMemory)
#
if @results[2].to_s.match(/\D/)
puts @results.each_slice(2).map { |e| e.join ';' }
else
puts @results.each_slice(3).map { |e| e.join ';' }
end