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?


You could do this,

 x | grep --color=never hello

To quickly test it, you can do,

ls -l /etc/ --color=always | grep --color=never .
| improve this answer | |
  • 3
    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
| improve this answer | |

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