Preserve ls colouring after grep’ing有一個類似的問題,但它讓我很煩惱,如果你將着色的grep輸出到另一個grep中,而着色不被保留。管道grep grep後保留着色
作爲示例,grep --color WORD * | grep -v AVOID
不保留第一個輸出的顏色。但是對我來說ls | grep FILE
確實保持顏色,爲什麼不同?
Preserve ls colouring after grep’ing有一個類似的問題,但它讓我很煩惱,如果你將着色的grep輸出到另一個grep中,而着色不被保留。管道grep grep後保留着色
作爲示例,grep --color WORD * | grep -v AVOID
不保留第一個輸出的顏色。但是對我來說ls | grep FILE
確實保持顏色,爲什麼不同?
grep
有時會禁用顏色輸出,例如寫入管道時。您可以覆蓋與grep --color=always
這種行爲的正確的命令行是
grep --color=always WORD * | grep -v AVOID
這是相當冗長,或者你可以添加一行
alias cgrep="grep --color=always"
您.bashrc
例如和使用作爲彩色grep的cgrep
。重新定義grep
時,可能會遇到依賴於grep
的特定輸出並且不喜歡ascii轉義代碼的腳本的麻煩。
該解決方案只在某些情況下,幸運的作品。請參閱下面的andersonvom的答案。 – studog 2018-01-30 15:09:41
一句忠告:
當使用grep --color=always
,實際的琴絃被下一個管通過將被改變。這可能會導致以下情況:
$ grep --color=always -e '1' * | grep -ve '12'
11
12
13
即使選項-ve '12'
應排除中間線,也不會因爲有1
和2
之間的顏色特徵。
grep沒有解決方法,對不對? – 2015-02-18 18:29:24
如果你使用'--color = auto',那麼它應該選擇你在其他地方管道並完全抑制顏色的事實,但它有點挫敗了目的。如果你仍然想要彩色結果,我想你可以在最後一個使用'--color'的管道再次grep它。 – andersonvom 2015-02-18 18:38:21
在Mac OS X上,至少,在@andersonvom的最後一個管道着色不起作用。不知道爲什麼;也許它正在着色排除的模式? '--color = always'確實起作用,我假設,上述注意事項。 – user766353 2015-02-25 23:45:12
儘管有點'hack-ish',它也可以在管道末尾重複grep命令。
grep WORD * | grep -v AVOID | grep WORD
這個問題似乎是題外話,因爲它是關於Unix命令的用法,屬於http://unix.stackexchange.com – Raptor 2014-06-04 07:02:05