我的问题与此类似:Syntax highlighting/colorizing cat。但不完全一样。
一个工具,这样做会很棒:
cat
一个文件x
cx
y
cy
等。有谁知道这样的事情?
对此的“现实世界的动机”是:我有一个日志(例如由log4cxx
生成),我想用一种颜色突出显示DEBUG
;另一个人ERROR
;第三等WARN
基本上,我想要实现的是:How to set colour of console output of log4cxx?
我考虑cat
和grep
之间的某种组合(使用自定义颜色)。但是外部工具也可以完成这项工作(如果存在的话)。
想法?
修改
谢谢, @sjngm !很棒的建议。我对它进行了一些修改(现在可以用作alias
并且整个行都会突出显示)。我决定发布我的修改,因为这对某些人有用:
# 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"'
使用示例:
$ cat log_file | log_color
$ cat log_file | log_error | log_color
答案 0 :(得分:1)
前段时间我使用nawk
cat yourfile | nawk '
BEGIN {
arr["EXCEPTION"] = "0;31";
arr["\\[ERROR\\]"] = "1;31";
arr["\\[WARN\\]"] = "0;31";
arr["\\[INFO\\]"] = "1;34";
}
{
l = $0;
for (pattern in arr) {
gsub(pattern, "\033[" arr[pattern] "m&\033[0m", l);
}
print l;
}'
配置部分应与x => cx
样式匹配,您也可以使用tail -f
代替cat
。
老实说,我不认为它有一个工具,因为它并不复杂。
答案 1 :(得分:0)
在这里你会发现一个sed-wrapper,它只是接受颜色和模式作为命令行参数:
https://stackoverflow.com/a/13593327/1033410
(用法:cat yourfile | colorize.sh红色ERROR黄色WARN蓝色'用户。*已登录')