linux 统计日志数量总,shell统计日志中时间段内匹配的数量的方法
shell統(tǒng)計日志中時間段內(nèi)匹配的數(shù)量的方法,有需要的朋友可以參考下。
假設(shè)日志文件mtasvr.log格式如下:
T:24583088(04:02:06)[root:Info] 6KqowLDLAgC93DFIKrENAA==.41S2:from=,to=, queued
T:122428336(13:36:51)[root:Info] 6KqowLAbAAByYzJIZGsOAA==.2W:from=,to=, queued
要求統(tǒng)計從14:27:20到15:26:41之間包含queued的數(shù)量。
最初,用grep匹配queued,然后用awk取出()中間的時間,最后用wc來統(tǒng)計行數(shù),得到下面這條語句:
復(fù)制代碼 代碼如下:
cat mtasvr.log |grep queued |awk -F\( '{print $2}' |awk -F\) '{if ($1>="14:27:20" && $1<="15:26:41") {print $1}}' |wc -l
接下來,覺得兩次awk取出括號()中的時間比較繁瑣。決定用sed替換掉括號再統(tǒng)計,會比較好看:
復(fù)制代碼 代碼如下:
cat mtasvr.log |grep 'queued' |sed "s/[()]/;/g" |awk -F\; '{if ($2>="14:27:20" && $2<="15:26:41") {print}}' |wc -l
然后,想法應(yīng)該去掉cat和grep。cat本身就沒必要,grep的匹配也可以直接用sed來完成:
復(fù)制代碼 代碼如下:
sed "/queued/s/[()]/;/g" mtasvr.log |awk -F\; '{if ($2>="14:27:20" && $2<="15:26:41") {print}}' |wc -l
最后,把wc統(tǒng)計行數(shù)也去掉,只用sed和awk來完成這個任務(wù):
復(fù)制代碼 代碼如下:
sed "/queued/s/[()]/;/g" mtasvr.log |awk -F\; '{if($2>="14:27:20" && $2<="15:26:41") m++} END{print m}'
總結(jié):
sed和awk很強大,當(dāng)然有些簡化也沒必要。
比如wc就能很好的完成統(tǒng)計行數(shù)的任務(wù),沒必要再去想awk怎么來實現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的linux 统计日志数量总,shell统计日志中时间段内匹配的数量的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子字开头的成语有哪些啊?
- 下一篇: linux 脚本的作用,shell ex