Попробуйте:
echo "abc:def" | sed 's@\([^\s]\):\([^\s]\)@\1 : \2@g'
Я тестировал это с GNU sed, но не уверен насчет BSD sed.
Вам нужны группы захвата, если вы хотите сохранить части исходного совпадения, что и делают \(...\)
, \1
и \2
. Кроме того, вам не нужен квалификатор +
, поскольку все, что вам нужно, это непосредственные соседи.