Вы используете синтаксис POSIX Basic (с экранированными скобками), когда вы указали флаг -r
, который означает расширенный синтаксис POSIX.
Подробнее по этому вопросу
Не избегайте скобок, и это должно сработать. Сед жалуется, потому что не думает, что есть группа, на которую можно сослаться, но вместо этого нужно найти буквальные скобки.
... "s/(.+:.+)/\1,f/" ...
т.е.
>echo "123:abc" | sed -r "s/(.+:.+)/\1,f/"
123:abc,f