С учетом вашего ввода:
awk '
NR == 1 {print; next}
{
split($1,a,/-/)
sep = values[a[1]] == "" ? "" : ","
values[a[1]] = values[a[1]] sep $2
}
END {for (key in values) print key, values[key]}
'
производит
ID: Value:
a 49,75
b 120,150,211
c 289
d 301,322
Язык, который поддерживает "hash-of-lists", также был бы удобен. Вот версия Perl
perl -lne '
if ($. == 1) {print; next}
if (/^(.+?)-\S+\s+(.*)/) {
push @{$values{$1}}, $2;
}
END {
$, = " ";
foreach $key (keys %values) {
print $key, join(",", @{$values{$key}});
}
}
'