为什么grep会\e[K在其彩色输出中添加ANSI代码?我看不出要点,但显然开发人员可以。这是ANSI / VT100终端代码,用于“从当前光标位置清除行到行尾”。
在边缘情况下,grep会导致文本从终端显示中“消失”。例如:
echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
简单的回显显示:cb,但是彩色显示显示:c
底层的编码文本是:echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K'
但是,没有\e[K代码,则 echo -e 'ab\r\033[01;31mc\033[m'可以正常工作!
grep包含这些\e[K代码的原因是什么?我正在编写一个脚本,以允许覆盖第二遍着色,如:c=--color=always; ls $c /bin/gzip | grep $c 'z'。所以我需要理解为什么grep使用\e[K。