Colorize text matching a regex through a pipe?

David Kramer david-8uUts6sDVDvs2Lz0fTdYFQ at public.gmane.org
Tue Jan 18 22:24:03 EST 2011


On 01/18/2011 02:08 PM, Daniel Hedlund wrote:
> On Wed, Dec 29, 2010 at 08:52, David Kramer <david-8uUts6sDVDvs2Lz0fTdYFQ at public.gmane.org> wrote:
>> Is there a linux tool that can work as a pipe (read stdin, write to stdout) and colorize any text
>> matching an regex?  If not, I'll have to write one.  Not that hard, but I would hate to reinvent
>> it.
> 
> egrep (grep -E) does this, at least the version I'm using does:
> 
> cat /etc/services | egrep --color=auto '#.+$'
> cat /etc/services | egrep --color=always ''#.+$'' | less -R
> 
> # change match color to bright green
> export GREP_COLOR='1;32'
> cat /etc/services | egrep --color=always ''#.+$'' | less -R
> 
> 
> I usually alias less="less -R" in my bashrc so I don't have to
> remember to add that every time.

Thanks.  I played with this, and with colortail.  I didn't really like
either solution in the end.  [e]grep only allows one color and one
pattern, and colortail doesn't actually work as a filter (the author
"has a patch for that").

I ended up going with a perl script I wrote, which lets me have
different patterns output with different colors, and our developers
already have perl, not colortail,




More information about the Discuss mailing list