轉載自:http://hittyt.CUOxin.com/blog/1927026
公司內部一哥們發布到郵件列表中的一個小tip,挺有意思,屬于程序員的“奇淫技巧”類吧,值得記錄一下。 如果你在linux下工作,那用tail -f跟蹤一個日志文件的輸出內容應該是家常便飯了。 但是,有時你更關心的是一些敏感字詞,希望能夠在動態跟蹤的同時,把這些字詞高亮出來,比如日志中的ERROR關鍵字。 那么,一種思路就是把你tail輸出的東西再做一次包裝處理,這個很符合linux管道處理的思想。以高亮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全部標紅了。 利用這個原理,你完全可以按照你所需要的顏色高亮你感興趣的輸出,具體的顏色說明,可以在man console_codes中查到。 另外,less本身也支持類似于tail -f的操作,就是在你用less打開一個文件之后,按住SHIFT+F鍵,這樣就直接進入follow的模式了。看上去跟tail -f效果是一致的。利用這點,你想達到高亮的tail -f的效果,就攏共分為以下3步了:
less xxx.log中/${key_work}的方式搜索你要高亮的關鍵字。(即使目前文件中沒有也沒關系)SHIFT+F,進入follow模式結束收工!
附加內容:
tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'當file.log里出現Finished: SUCCESS時候就退出tail,這個命令用于實時監控并過濾log是否出現了某條記錄。
新聞熱點
疑難解答