[guest@localhost ~]$ echo 'abcd' | sed 's/bb*//'
acd
[guest@localhost ~]$
abcd (почему?!!)
Ты не понимаешь, как он работает. b* совпадает с пустотой. А пустота где? Пустота в начале. Поэтому он берёт эту пустоту совпавшую и заменяет на пустоту.
Добавим замену на x и видим это наглядно
[guest@localhost ~]$ echo 'abcd' | sed 's/b*/x/'
xabcd
[guest@localhost ~]$
Если же ты поставишь там в конце g, это совсем по-другому работает
[guest@localhost ~]$ echo 'abcdabcd' | sed 's/b*/x/g'
xaxcxdxaxcxdx
[guest@localhost ~]$
Это совсем не то, что надо (он заменил все пустоты и все b).
Поэтому, если тебе надо заменить только первое вхождение с b, используется либо +, либо аналог плюса через звёздочку
[guest@localhost ~]$ echo 'abcdabcd' | sed 's/bb*/x/'
axcdabcd
[guest@localhost ~]$