Как уже объяснялось в ZimbiX, используйте двойные кавычки и так далее.
Альтернативой его методу является использование синтаксиса $ '…'
, в котором интерпретируются escape-последовательности. То есть:
\e => ASCII ESC (0x1b, 033)
\033 => ASCII ESC (0x1b, 033)
\x1b => ASCII ESC (0x1b, 033)
Итак:
red=$'\e[31m'
blue=$'\e[34m'
Затем:
printf $blue && sed "s/2/${red}2$blue/g" Hello.txt
Или, если хотите, включите переменную reset :
cc=$'\e[0m'
printf $blue && sed "s/2/$cc${red}2$cc$blue/g" Hello.txt && printf $cc
Чтобы просмотреть код, скажите что-нибудь вроде:
(printf $blue && sed "s/2/${red}2$blue/g" Hello.txt) | cat -v
Также обратите внимание на использование of g
для глобального в sed
.