如何保留输入ansi颜色编码的grep



以下grep不维护输入ANSI颜色编码。有没有办法保持原来的颜色编码?

$ builtin printf '%sn' $'e[33mxe[0m' | grep $'e[33m' 
x

使用--color=never:禁用grep的着色

$ builtin printf '%sn' $'e[33mxe[0m' | grep --color=never $'e[33m'

否则,grep在搜索字符串e[33m之前插入一个转义序列以对其进行着色,然后在插入另一个序列之后重置所有着色,这反过来又导致字母x在输出中不着色。

grep的默认着色模式是--color=auto,它仅在输出为端子时对输出进行着色。因此,禁用着色的另一种方法是将grep的输出重定向到除终端之外的其他地方,例如cat:

$ builtin printf '%sn' $'e[33mxe[0m' | grep $'e[33m' | cat

最新更新