grep/awk/sed查指定時(shí)間段日志
情景重現(xiàn):管理后臺(tái)down了,項(xiàng)目的日志為4G多的一個(gè)文件,查詢上午某段時(shí)間內(nèi)的日志
示例的日志格式:2020-07-09 10:15:46.635 [...-thread-3] ERROR com....
①grep
命令:grep '時(shí)間' '日志文件名'
1、示例:如查詢2020-07-09 10:10到2020-07-09 10:15區(qū)間的日志
grep "2020-07-09 10:1[0-5]" catalina.out
2、示例:如查詢當(dāng)天10點(diǎn)到11點(diǎn)的日志
grep "2020-07-09 1[0-1]" catalina.out
注:親測(cè)有效

圖1
②awk命令
1、示例:如查詢今天10:10:10 到10:15:59區(qū)間的日志,注意時(shí)間要用引號(hào)
awk '$2>"10:10:10" && $2<"10:15:59"' catalina.out
注意參數(shù)$1和$2的取值,我這里$1是指年月日,$2是指時(shí)分秒。
擴(kuò)展:$0表示行所有信息,$1、$2、$3...$n分別表示第1列、第2列、第3列...第n列(以空格為默認(rèn)分隔符將每行切片)。awk命令經(jīng)常會(huì)使用這些符號(hào)去做匹配、打印指定指定列等操作
日志格式為:2020/07/09-05:02:37 >> INFO >>
則:awk '$1>"2020/07/09-05:01:38" && $1<"2020/07/09-05:02:38"' catalina.out
注:親測(cè)有效

圖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
注:由于我項(xiàng)目日志格式:2020/07/09-11:50:59 ERROR https-jsse-nio-8080-exec-2 對(duì)于該命令沒(méi)有適用
查詢結(jié)果生成日志文件:linux中>表示覆蓋原文件內(nèi)容(文件的日期也會(huì)自動(dòng)更新),>>表示追加內(nèi)容(會(huì)另起一行,文件的日期也會(huì)自動(dòng)更新)。
可以將查詢截取的日志生成一個(gè)新的日志文件來(lái)方便查詢,實(shí)例:grep "2020-07-09 1[0-1] " catalina.out >> queryTemporaryLog20200709.log
希望對(duì)你有幫助,祝你有一個(gè)好心情,加油!
若有錯(cuò)誤、不全、可優(yōu)化的點(diǎn),歡迎糾正與補(bǔ)充!