Потому что с двумя ,
в (, \) \ (, \)
у вас уже есть совпали первые два ,
, и шаблон Regex, сопоставленный до сих пор, не будет возвращаться для остальной части строки. Остался только один, последний ,
, поэтому он просто напечатан без каких-либо *
между ним, второй последний.
Если у вас есть еще один ,
на входе, вы получите желаемый (глобальный, g
) ответ:
% echo ,,,, | sed s':\(,\)\(,\):\1*\2:'g
,*,,*,