以下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