!($1 in seen) { seen[$1] = 1; order[++n] = $1 } { value[$1, $2] = $3 } END { print "sample", "before", "after" for (i = 1; i <= n; i++) { id = order[i]; print id, value[id, "before"], value[id, "after"] } }