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] }