manatwork's brilliant little "or nothing" hack in the other question, I offer this, which adds the ability to get two highlight colors:
$ myprogram | \
GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'
That is, you run
grep over the output twice, with a different
GREP_COLORS environment variable each time.
The '01;32' value means "bold green", and the other means "bold red". See the Wikipedia article on ANSI codes for more ideas.
Alas, this requires GNU grep version 2.5.3 or higher. Older versions of GNU grep supported a different coloring mechanism, but those versions have a bug that prevents you from using the feature in a pipeline more than once. BSD grep emulates the older GNU grep coloring mechanism, and it will work twice in a pipeline, but it yells about "empty sub-expression" due to the
You can remove the backslashes at the end of the first two lines to make it all a single line. I've just split it here for clarity and to play nice with the SE page format.