gpt4 book ai didi

linux - 使用 --color=always 选项时 grep 结果不同

转载 作者:太空狗 更新时间:2023-10-29 11:09:01 25 4
gpt4 key购买 nike

我在使用 grep 时遇到了这个问题,想知道它是否是一个错误。可重现的场景是一个包含以下内容的文件:

string
string-

并将其保存为"file"。目标是使用带有 --color=always 的 grep 来输出“string”,同时排除“string-”。如果没有 --color,以下将按预期工作:

$ grep string file | grep -v string-

但使用 --color 输出两个实例:

$ grep --color=always string file | grep -v string-

我尝试了几种变体,但似乎 --color 打破了预期的行为。这是一个错误还是我误会了什么?我的假设是传递 --color 应该对结果没有影响。

最佳答案

@Jake Gould's answer对实际发生的事情进行了很好的分析,但让我尝试用不同的方式来表达:

--color=always 使用 ANSI escape codes用于着色。

换句话说:--color=always 通过设计改变其输出,因为它必须添加必要的转义序列才能实现着色。

切勿使用 --color=always,除非您知道输出预期包含 ANSI 转义序列 - 通常,对于人类眼球在终端上。

如果您不确定输入的处理方式,请使用 --color=auto,我相信这会导致 grep 仅当其标准输出连接到终端时才应用着色。

在给定的管道中,通常只有将--color=auto(或--color=always)应用于才有意义grep 命令是管道中的最后一个命令

关于linux - 使用 --color=always 选项时 grep 结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com