#!/usr/bin/awk -f BEGIN { while (getline && $0 !~ /^$/) { print; } print ""; } /^[0-9][0-9][0-9][0-9]-[0-9][0-9]/ { mon = substr($1, 1, 7); if (last_month != "" && last_month != mon) { print_summary(); } last_month = mon; category = $0; sub("^.*\(", "", category); sub("\).*$", "", category); cat[category] +=$2; } END { print_summary(); } function print_summary() { print last_month; for (c in cat) { printf " %-10s: %3.2f Euro\n", c, cat[c]; sum_month += cat[c]; delete cat[c]; } printf " %-10s: %3.2f Euro\n", "TOTAL", sum_month; print ""; sum_month = 0; }