pipe道grep grep后保留着色
在grep'ing之后Preserve ls着色中有一个类似的问题,但是它让我感到困惑 ,如果你将grep输出的颜色输出到另一个grep中,那么着色不会被保留。
作为一个例子grep --color WORD * | grep -v AVOID grep --color WORD * | grep -v AVOID不保留第一个输出的颜色。 但是对我来说ls | grep FILE ls | grep FILE做保持颜色,为什么不同?
grep有时会禁用颜色输出,例如在写入pipe道时。 你可以用grep --color=always覆盖这个行为
正确的命令行将是
grep --color=always WORD * | grep -v AVOID
这是相当详细的,或者你可以添加行
alias cgrep="grep --color=always"
以你的.bashrc为例,并使用cgrep作为彩色grep。 当重新定义grep ,可能会遇到依赖grep特定输出的脚本的麻烦,而不喜欢ascii转义代码。
一个build议的话:
当使用grep --color=always ,被传递到下一个pipe道的实际string将被改变。 这可能导致以下情况:
$ grep --color=always -e '1' * | grep -ve '12' 11 12 13
尽pipe选项-ve '12'应排除中间线,但不会因为在1和2之间有颜色字符。
尽pipe有点“hack-ish”,但它也可以简单地在pipe道末尾重复grep命令。
grep WORD * | grep -v AVOID | grep WORD