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