Pep*_*ppe 5 colors text-processing syntax-highlighting
我想使用 wim、less 或其他方式更改显示大(约 6000 行)日志文件的方式,以简化问题检查。
我想强调一些行对数的基础上图案(即error,warning,info...)和/或隐藏一些人。
我可以使用哪些工具?我只需要一个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
Run Code Online (Sandbox Code Playgroud)
我会推荐一个基于awk像 Valentin B. 解决方案的 shell 脚本:
$ 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
Run Code Online (Sandbox Code Playgroud)
为了能够以交互方式查看彩色输出,我将less在原始模式下使用,例如:
colorize mylog.txt | less -R
Run Code Online (Sandbox Code Playgroud)
awk,如其他答案中所述,绝对是首先要达到的工具。
但从长远来看,它不是唯一的工具。
AL Lambert'slogtool是专门为后处理日志文件设计的,它有一个复杂的(而且记录很糟糕)配置系统,允许一个人为 13 种颜色中的每一种分配一个充满正则表达式的文件。
猫*.log | 日志工具
它具有理解具有 TAI64N 时间戳的日志的区别。
对此,添加:
唉,其中一些工具非常错误地进行着色。他们硬连线控制序列,而不是使用来自 terminfo 的setaf/setab等等。
另请注意,由于更微妙的原因,着色很棘手,而且几乎没有着色程序能做到这一点。为了完全正确,着色器必须处理自动边距和 DEC VT挂起换行机制,我还没有看到任何着色器这样做。GNUgrep在这方面有一个相当著名的着色错误,但这不仅限于grep.