Ubuntu – grep – highlight inside a highlight

colorscommand linegrep

I'm facing difficulties while trying to multicolor-highlight matches using grep's color environment.

After I stumbled across Colored grep, I found it very useful to highlight multiple pattern in a single run.
So I set up the alias' as told, but then I came across following problem:

echo "Im looking for KeyWords" | grep 'KeyWords' --color=always | green-grep 'Word'

results in

Im looking for Key Words (italic=red, bold=green)

where the "s" is not highlighted red, because grep sets the color environment back to normal after the end of a match.

Is there any way to realize this with grep, or am I facing a wall?

Best Answer

You haven't hit a wall, but you've hit a |! (So unfortunately, no, you cannot do that without a major re-write of the grep source code.)

However, I like the idea, so if you want, feel free to file a bug at the FSF, or if you don't want to go through the effort, I'll file the bug for you! (just drop a comment)


Fantastic question! I've already added:

alias grey-grep="GREP_COLOR='1;30' grep --color=always"
alias red-grep="GREP_COLOR='1;31' grep --color=always"
alias green-grep="GREP_COLOR='1;32' grep --color=always"
alias yellow-grep="GREP_COLOR='1;33' grep --color=always"
alias blue-grep="GREP_COLOR='1;34' grep --color=always"
alias magenta-grep="GREP_COLOR='1;35' grep --color=always"
alias cyan-grep="GREP_COLOR='1;36' grep --color=always"
alias white-grep="GREP_COLOR='1;37' grep --color=always"

to my bash.bashrc file!

Related Question