GNU bug report logs -
#55641
Using colours with grep
Previous Next
Full log
View this message in rfc822 format
On 2022-05-26, Paul Eggert wrote:
> On 5/25/22 13:48, goncholden via Bug reports for GNU grep wrote:
> >Have been using grep to colour the filename printed by tail using
> >grep, by setting GREP_COLOR. However the setting does not work
> >with GREP_COLORS.
> >
> >Additionally, I could not set colour values with tput commands.
> >
> >tail -v -n "$tm" $file | GREP_COLOR='01;32' $_GREP -e ^ -e '^==> .* <==$'
>
> Sorry, I'm not following. Can you give a test case that I can
> reproduce here?
I think the problem is that the OP has used GREP_COLORS to specify
the colors that grep uses, and has then tried to override the
default colors by specifying GREP_COLOR on the command line. But,
as the man page says, in the GREP_COLOR section,
The mt, ms, and mc capabilities of GREP_COLORS have priority
over it.
So the GREP_COLOR setting has no effect when GREP_COLORS is also
used, at least when GREP_COLORS contains the ms capability.
There are a number of solutions to this, depending on what the OP is
trying to achieve with the other values in GREP_COLORS. One is to
clear GREP_COLORS in their command line, e.g.,
tail -v -n "$tm" $file | GREP_COLORS= GREP_COLOR='01;32' $_GREP -e ^ -e '^==> .* <==$'
Another would be to set the ms capability in GREP_COLORS instead of
using GREP_COLOR, e.g.,
tail -v -n "$tm" $file | GREP_COLORS='ms=01;32' $_GREP -e ^ -e '^==> .* <==$'
For a demonstration of the problem, try the following.
$ man grep | grep prevents
The result is a single line of the man page with "prevents"
highlighted in the default red.
$ man grep | GREP_COLOR='01;32' grep prevents
This result is the same except that "prevents" is in green.
$ export GREP_COLORS='ms=01:33'
$ man grep | grep prevents
$ man grep | GREP_COLOR='01;32' grep prevents
Now, both results have "prevents" in yellow, which agrees with the
man page. However, the OP expected the GREP_COLOR setting on the
command line to override the GREP_COLORS setting in the environment,
which it doesn't.
Caveats:
- I am assuming that $_GREP is grep.
- I don't understand the tput problem.
- I don't know anything about grep colors other than what I just
read in the man page. The question just intrigued me.
Regards,
Gary
This bug report was last modified 2 years and 353 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.