Если это не обязательно должен быть awk, этот скрипт на perl выдаст желаемый результат для вашего примера ввода:
#!/usr/bin/perl
use warnings;
use strict;
use feature qw/say/;
use List::MoreUtils qw/pairwise/; # Non-core; install through your OS or CPAN.
my %records;
while (<>) {
my ($key, @cols) = split /\s+/;
$records{$key} =
[ pairwise { defined $a ? $a - ($b // 0) : $b } @{$records{$key}}, @cols ];
}
foreach my $key (sort keys %records) {
say "$key @{$records{$key}}";
}
Он производит вывод в отсортированном порядке, как в вашем примере. Если предполагается, что строки располагаются в том порядке, в котором они впервые появляются в вашем реальном вводе, это тоже выполнимо. Это не было ясно из вашего образца, так как он уже отсортирован.
Также не требуется, чтобы дубликаты были последовательными - это важно?