BEGIN{ template = "%6s %-75s\n" printf template, "Delta", "Module Path" } /^-/{ s = substr($1, 2) x[s] = $3; }; /^+/{ s = substr($1, 2) d = $3 if (s in x) d = d - x[s] y[s" "d] = d } END{ asorti(y, z1, "@val_num_asc") for (i=1; i <= length(z1); i++){ split(z1[i], z2, " ") printf template, z2[2], z2[1] } }