def number = /\W+(\d+)/ def eintraege = [] new File('weather.dat').text.eachMatch(/(?m)^${number * 3}.*/){ all, tag, max, min -> def spread = max.toInteger() - min.toInteger() eintraege << [tag:tag, spread:spread, min:min, max:max] } eintraege .sort{ it.spread } .each{ def format = it.keySet().collect{ format(it) + ':%3s'}.join(' ') def values = it.values()*.toString() println String.format(format, *values) } def format(label) { label[0].toUpperCase() + label[1..-1] }