首页 > 解决方案 > 在 sed 中使用控制台转义颜色代码

问题描述

我需要为以 . 开头的线条着色#

我在 perl 中有以下代码,效果很好:

echo 'aaa\n#bbb\nccc' | perl -pe "s/(#.*)$/\e[0;32m\1\e[0m/"

我试图在 sed 中做同样的事情,但它只打印颜色代码,而不是颜色:

echo 'aaa\n#bbb\nccc' | sed -r "s/(#.*)$/\e[0;32m\1\e[0m/"
aaa
e[0;32m#bbbe[0m
ccc

为什么颜色代码在 sed 中不起作用,我必须做些什么不同的事情?

标签: perlsedcolorsconsole

解决方案


使用 '\o033' 而不是 '\e':

$ echo -e 'aaa\n#bbb\nccc' | sed -r "s/(#.*)$/\o033[0;32m\1\o033[0m/"

推荐阅读