grep/awk/sed查指定時間段日志
情景重現(xiàn):管理后臺down了,項目的日志為4G多的一個文件,查詢上午某段時間內(nèi)的日志
示例的日志格式:2020-07-09 10:15:46.635 [...-thread-3] ERROR com....
①grep
命令:grep '時間' '日志文件名'
1、示例:如查詢2020-07-09 10:10到2020-07-09 10:15區(qū)間的日志
grep "2020-07-09 10:1[0-5]" catalina.out
2、示例:如查詢當天10點到11點的日志
grep "2020-07-09 1[0-1]" catalina.out
注:親測有效
圖1
②awk命令
1、示例:如查詢今天10:10:10 到10:15:59區(qū)間的日志,注意時間要用引號
awk '$2>"10:10:10" && $2<"10:15:59"' catalina.out
注意參數(shù)$1和$2的取值,我這里$1是指年月日,$2是指時分秒。
擴展:$0表示行所有信息,$1、$2、$3...$n分別表示第1列、第2列、第3列...第n列(以空格為默認分隔符將每行切片)。awk命令經(jīng)常會使用這些符號去做匹配、打印指定指定列等操作
日志格式為:2020/07/09-05:02:37 >> INFO >>
則:awk '$1>"2020/07/09-05:01:38" && $1<"2020/07/09-05:02:38"' catalina.out
注:親測有效
圖2
③sed命令
1、示例:如查詢2020-07-09 10:10到2020-07-09 10:15區(qū)間的日志
sed -n '/2020-07-09 10:10:00/,/2020-07-09 10:15:00/p' catalina.out
注:由于我項目日志格式:2020/07/09-11:50:59 ERROR https-jsse-nio-8080-exec-2 對于該命令沒有適用
查詢結(jié)果生成日志文件:linux中>表示覆蓋原文件內(nèi)容(文件的日期也會自動更新),>>表示追加內(nèi)容(會另起一行,文件的日期也會自動更新)。
可以將查詢截取的日志生成一個新的日志文件來方便查詢,實例:grep "2020-07-09 1[0-1] " catalina.out >> queryTemporaryLog20200709.log
希望對你有幫助,祝你有一個好心情,加油!
若有錯誤、不全、可優(yōu)化的點,歡迎糾正與補充!