no awk:
{
if (count[$1] == "") {
count[$1] = 1;
results[$1] = $2;
} else {
count[$1] = count[$1] + 1;
results[$1] = results[$1] "," $2;
}
}
END {
for (number in count) {
print count[number],number,results[number];
}
}
resulta na saída de:
2 100 blue,red
3 1 blue,green,red
para seus dados de amostra acima.
A ordem dos resultados pode não ser exatamente o que você deseja, não sei ao certo como isso é importante para você.