This question already has an answer here:

For example, I have a output:

Hello, this is the output.

(let's say that for example hello is colored red, and the is colored green, and output is colored purple).

Now, let's say that this is the output of a command named x.

If I use this command, the output becomes white:

x | grep hello

I've read that one could use grep --color=always. However, this changes the color to highlight the result I searched for instead of keeping the original line colors.

I want to keep the original line colors. How do I use grep while keeping them?

marked as duplicate by Anthon, Archemar, Michael Homer, MelBurslan, chaos Apr 15 '16 at 15:50

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


You could do this,

 x | grep --color=never hello

To quickly test it, you can do,

ls -l /etc/ --color=always | grep --color=never .
  • 2
    The high amount of upvotes suggest this is the answer; but it is a partial answer that doesn't work in general. It works for ls just fine though. – Joshua Apr 15 '16 at 3:06

Just a quick hack: when grep is sending output to a pipe, it also commutes to no-changing-color mode

x | grep hello | cat

Not the answer you're looking for? Browse other questions tagged or ask your own question.