Com sed , você precisa de um loop:
sed -e :1 -e 's/^\([^,]*\) //;t1'
Ou use o espaço de espera para poder substituir todos os espaços e depois recuperar a parte original da linha:
sed 'h;s/,.*//;s/ //g;G;s/\n[^,]*//'
É mais fácil com awk :
awk -F, -v OFS=, '{gsub(" ", "", $1); print}'
Ou perl :
perl -F, -lpe '$F[0] =~ s/ //g; $_ = join ",", @F'
ou:
perl -pe 's{[^,]*}{$& =~ s/ //gr}e'
ou:
perl -pe 's/\G[^, ]*\K //g'
Esse último talvez mereça uma explicação: \G usa o sinal g .
As sinalizações g significam substituir g lobally e implica um loop em que perl retoma a pesquisa da próxima ocorrência imediatamente após a anterior.
\G corresponde a esse local logo após a correspondência anterior, portanto, após o último espaço substituído e na primeira passagem no loop, no início da linha. Como estamos usando [^,] , não permitimos que o loop ultrapasse a primeira vírgula, portanto, substituindo todos os espaços antes somente dela.