如何實現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模式

結束收工!

相關文章
相關標籤/搜索