如何实现Linux下高亮关键字的tail -f功能

公司内部一哥们发布到邮件列表中的一个小tip,挺有意思,属于程序员的“奇淫技巧”类吧,值得记录一下。linux

若是你在linux下工做,那用tail -f跟踪一个日志文件的输出内容应该是屡见不鲜了。程序员

可是,有时你更关心的是一些敏感字词,但愿可以在动态跟踪的同时,把这些字词高亮出来,好比日志中的ERROR关键字。shell

那么,一种思路就是把你tail输出的东西再作一次包装处理,这个很符合linux管道处理的思想。less

以高亮Log中的ERROR为例,你能够这样:命令行

tail -f xxx.log | perl -pe 's/(ERROR)/\e[1;31m$1\e[0m/g'

 其中,xxx.log是你要跟踪的文件。这里假设了你的Linux的PATH中有perl。perl在这里干的事情,就是经过命令行的方式进行动态的替换ERROR字符串的操做,替换过程当中,主要使用了Linux的console_codes的语法结构。(具体关于console_codes的细节,能够经过man console_codes进行了解)这里,\e主要进行转移说明。日志

若是你手头有server log之类的日志,试试上面的命令,是否是把ERROR所有标红了。code

利用这个原理,你彻底能够按照你所须要的颜色高亮你感兴趣的输出,具体的颜色说明,能够在man console_codes中查到。server

另外,less自己也支持相似于tail -f的操做,就是在你用less打开一个文件以后,按住SHIFT+F键,这样就直接进入follow的模式了。看上去跟tail -f效果是一致的。利用这点,你想达到高亮的tail -f的效果,就拢共分为如下3步了:ip

  1. less xxx.log字符串

  2. 中/${key_work}的方式搜索你要高亮的关键字。(即便目前文件中没有也不要紧)

  3. SHIFT+F,进入follow模式

结束收工!

相关文章
相关标签/搜索