\xNN
é uma seqüência de escape no GNU sed, mas não é padrão e, em particular, não está disponível no Solaris.
Você pode incluir um caractere de escape literal em seu script, mas isso dificultaria a leitura e a edição.
Você pode usar printf
para gerar um caractere de escape. Entende escapes octal, não hexadecimal.
esc=$(printf '3')
echo "test" | sed "s,.*,${esc}[31m&${esc}[0m,"
Você pode chamar tput
para gerar o texto de substituição na chamada para sed. Esse comando procura sequências de escape no banco de dados terminfo . Em teoria, usar tput
torna seu script mais portátil, mas, na prática, é improvável que você encontre um terminal que não use ANSI códigos de escape .
echo "test" | sed "s,.*,$(tput setaf 1)&$(tput sgr0),"