Com awk , tente:
awk '{a[$1]=($1 in a)?a[$1]" "$2:$2};END{for(i in a)print i,a[i]}' file1 file2
Para arquivos grandes, você deve usar a abordagem join em vez de awk , desde quando a abordagem awk armazenará todo o conteúdo dos arquivos na memória antes de imprimir.