Есть ряд проблем.
Во-первых, брекеты {...} в вашем выражении sed ничего не соответствует входным данным. В базовом регулярном выражении sed фигурные скобки являются буквальными, а в расширенном регулярном выражении они окружают квантификатор формы {н, м}. Они никогда не используются для группировки.
Во-вторых, ваша цветовая последовательность искажена — открытие должно быть \033[0;34м скорее, чем \033[0;34
В-третьих, символ обратной косой черты \ является особенным в sed - в частности, обратная косая черта, за которой следует десятичная цифра в правой части подстановки, является обратной ссылкой на группу захвата; по крайней мере в GNU sed, \0 относится ко всему захваченному LHS, эквивалентному специальному токену замены & так например
$ эхо-фу | sed 's/foo/\033bar/'
foo33bar
Чтобы передать литерал \ к внешнему эхо -е вам нужно \\ внутри строки замены sed.
В заключение, \ является также специально для оболочки, поэтому внутри «мягких» двойных кавычек требуется дополнительная обратная косая черта. Так что либо:
echo -e "$(echo "Это неокрашенный текст" |
sed "s/Это неокрашенный текст/Это \033[0;34бесцветный текст\033[0m/")"
или (заменив внутренние двойные кавычки «сильными» одинарными кавычками):
echo -e "$(echo "Это неокрашенный текст" |
sed 's/Это неокрашенный текст/Это \033[0;34бесцветный текст\033[0m/')"
Обратите внимание, что вам не нужно г модификатор, чтобы сделать одну замену в строке.
Смотрите также Какие символы мне нужно экранировать при использовании sed в скрипте sh?