Um jeito de fazer isso em sed seria usar um loop:
$ echo ",,a,,,b,,,," | sed ':a; s/\(^\|,\)\(,\|$\)/-/; ta'
-,-,a,-,-,b,-,-,-,-
Se a sua versão suportar expressões regulares estendidas, você poderá simplificá-la para uma forma mais legível
sed -E ':a; s/(^|,)(,|$)/-/; ta'
Uma maneira alternativa de fazer isso em perl , dividindo em campos separados por vírgulas e, em seguida, mapeando campos vazios para hifens:
perl -anle 'print join ",", map { $_ ? $_ : "-" } split(",", $_, -1)'
(O argumento adicional -1 para o split força os campos vazios a serem incluídos).