text-processing – Shell – 根据模式自定义日志文件每行的颜色

参见英文答案 > How to have tail -f show colored output                                    19个
我想改变使用wim,less或者其他方式显示大(~6000行)日志文件的方式,以简化问题检查.

我想基于模式(即错误,警告,信息……)突出显示日志的某一行和/或隐藏其他一些日志.

我可以使用哪些工具?我只需要一个shell脚本吗?重要的是,在这个过程之后,我可以使用less,vim,…读取输出来执行搜索操作!

编辑:
一小段日志:

2016/10/25 12:19:24.403355 INFO <ServiceManager.cpp#2614 TID#3> Security object has NOT been parsed
2016/10/25 12:19:24.403369 INFO <ServiceManager.cpp#1263 TID#3> Service object sequence started
2016/10/25 12:19:24.403372 DBG <ServiceManager.cpp#1276 TID#3> preinvoke succeeded
最佳答案
我会推荐一个shell脚本,基于像Valentin B.解决方案的awk:

$cat colorize
awk '
function color(c,s) {
        printf("\033[%dm%s\033[0m\n",30+c,s)
}
/error/ {color(1,$0);next}
/success/ {color(2,$0);next}
/warning/ {color(3,$0);next}
/INFO/ {color(4,$0);next}
/DBG/ {color(5,$0);next}
{print}
' $1

为了能够以交互方式查看彩色输出,我会在原始模式下使用较少,例如:

colorize mylog.txt | less -R

转载注明原文:text-processing – Shell – 根据模式自定义日志文件每行的颜色 - 代码日志