Вам нужно использовать группу захвата и обратную ссылку:
sed -E 's/(^|[^.])hi/\1bi/g' /tmp/hi
Здесь мы фиксируем начало строки или не точечный символ в группе # 1, который используется в качестве обратной ссылки, т.е. \1
.
Примеры:
sed -E 's/(^|[^.])hi/\1bi/g' <<< 'bali=hi'
bali=bi
sed -E 's/(^|[^.])hi/\1bi/g' <<< 'bali.hi'
bali.hi