Вы не можете использовать обратную ссылку внутри класса символов.
Я бы подошел к этому, используя часовой для тех случаев, когда пространство должно быть сохранено, например так:
echo "hello world doddy" |
sed 's/\([^ ]\) \1/\1<<>>\1/g;s/\([^ ]\) \([^ ]\)/\1\2/g;s/<<>>/ /g'
Редактировать: изменено .
на [^ ]
, чтобы избежать использования двойных пробелов, просто чтобы быть более точным. Спасибо за предложение.