My question is similar to this one: Syntax highlighting/colorizing cat . But not exactly the same.
A tool, doing this would be great:
cat
a file- highlight word
x
in colorcx
- highlight word
y
in colorcy
etc. Does anyone know something like this?
The "real-world motivation" for this is: I have a log (generated by log4cxx
for example) and I want to highlight DEBUG
in one color; ERROR
in another; WARN
in third, etc.
Basically, what I'm trying to achieve is: How to set colour of console output of log4cxx?
I think about some kind of combination between cat
and grep
(with custom colors). But an external tool would do the job, too (if exists).
Ideas?
EDIT:
Thanks, @sjngm! Great suggestion. I modified it a bit (now can be used as alias
and also the whole rows are highlighted). I decided to post my modifications, as this could be useful for somebody:
# escaped ' ------------v; light red ------vvvv; red ------------vvvv; yellow -------vvvvv; green ---------vvvv; brown ----------vvvv; dark gray ------vvvv
alias log_color='nawk '"'"'BEGIN { arr["FATAL"] = "1;31"; arr["ERROR"] = "0;31"; arr["WARN"] = "1;33"; arr["INFO"] = "0;32"; arr["DEBUG"] = "0;33"; arr["TRACE"] = "1;30" } { l = $0; for (pattern in arr) { gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"
alias log_error='grep "FATAL\|ERROR\|WARN"'
Example usage:
$ cat log_file | log_color
$ cat log_file | log_error | log_color