相关疑难解决方法(0)

当我通过管道传输到另一个进程时,我的 ANSI 转义码去哪里了?我可以保留它们吗?

有时我想通过管道传输进程的颜色编码输出,例如。grep ...但是当我将它输送到另一个进程时,例如。sed,颜色代码丢失了......

有什么方法可以保持这些代码完好无损吗?

这是一个丢失彩色输出的示例:

echo barney | grep barney | sed -n 1,$\ p   
Run Code Online (Sandbox Code Playgroud)

command-line colors pipe escape-characters

41
推荐指数
1
解决办法
8338
查看次数

grep --color 添加 ANSI 代码 ESC[K - 这可以改变显示的文本

为什么 grep 将 ANSI 代码添加\e[K到其彩色输出中?我看不出它的意义,但显然开发人员可以。它是一个ANSI/VT100 终端代码,用于“清除从当前光标位置到行尾的行”

在边缘情况下,grep 会导致文本从终端显示中“消失”。例如:

echo -e "ab\rc"
echo -e "ab\rc" |grep --color=always "c"
Run Code Online (Sandbox Code Playgroud)

简单的显显示: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.

grep colors terminal

9
推荐指数
1
解决办法
4179
查看次数

标签 统计

colors ×2

command-line ×1

escape-characters ×1

grep ×1

pipe ×1

terminal ×1