使用grep、awk統計查詢日誌

日誌樣本: 
囧,日誌格式是我隨便定得(莫噴,在明珠時有專門的數據組統計日誌,日誌都很是規範,在這徹底亂套了),爲了方便統計支付成功的總金額旁邊都空了個空格,這樣的話方便使用awk取出金額! 
web

?面試

1
2
[INFO] 2014 - 11 - 05 15 : 30 : 31 , 067 [http-bio- 8060 -exec- 24 ] [com.xxxx.service.impl.PayServiceImpl.updatePayOver: 56 ]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[ 2560.0 ],payMethod:[百度錢包]
[INFO] 2014 - 11 - 05 15 : 30 : 31 , 095 [http-bio- 8060 -exec- 24 ] [com.xxxx.service.impl.PayServiceImpl.updatePayOver: 60 ]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[ 2560.0 ],payMethod:[百度錢包],code:[payok]

第一步:統計出支付成功的日誌 
*」[]「屬於正則關鍵字故須要轉義 
tomcat

?函數

1
grep 'code:\[payok\]' catalina.out

固然,爲了性能咱們能夠查出支付成功的訂單時就將它寫入一個文件,後面的查詢再依據這個來查詢! 
性能

?學習

1
grep 'code:\[payok\]' catalina.out > ~ /test .txt

第二部:取出金額,並計算金額spa

?.net

1
cat ~ /test .txt | awk '{print $6}' | awk '{sum+=$1} END {print sum}'

固然須要查詢支付成功的訂單的數目直接命令行

?日誌

1
wc -l ~ /test .txt

下面對上面的查詢進行擴展:

1. 查詢當天的支付的訂單數目

?

1
cat ~ /test .txt | grep -c ` date "+%Y-%m-%d" `

一樣也是先篩選出支付成功的訂單,而後再塞選今天的數目

這裏先列出grep經常使用的命令行選項: 

?

1
2
3
4
5
6
7
8
9
10
-c    只顯示有多少行匹配,而不具體顯示匹配的行。
     -h    不顯示文件名。
     -i    在字符串比較的時候忽略大小寫。
     -l    只顯示包含匹配模板的行的文件名清單。
     -L    只顯示不包含匹配模板的行的文件名清單。
     -n    在每一行前面打印改行在文件中的行數。
     - v    反向檢索,只顯示不匹配的行。
     -w    只顯示完整單詞的匹配。
     -x    只顯示完整行的匹配。
     -r /-R 若是文件參數是目錄,該選項將遞歸搜索該目錄下的全部子目錄和文件。

2. 查詢當月支付成功的訂單

?

1
cat ~ /test .txt | grep ` date "+%Y-%m" `

date爲日期函數``表示嵌套命令,也能夠直接grep 2014-11,對於中文字符或者有空格的須要grep 後面的參數加上""引號(單引或者雙引貌似都行)

3. 統計10月和11月的訂單grep支持正則,非常強大 

?

1
grep '2014-1[0-1]'

剩下的很少說的,看官本身去擴展 

下面來講說replace、find 
1. 查詢多個 tomcat的 Context信息(以前面試的時候有遇到過,確實很方便) 

?

1
find ./ -name server.xml | xargs grep "<Context"

2. 統一更改配置文件中的支付回調域名(前提:有100多個配置文件source_xxx.properties修改,實在受不了,查了這個命令,很是好用)

?

1
replace 'xxx.xxx.cn' 'xx.xxx.cn' -- source_*

但願你們補充,我也好去多學習一些,啊哈哈哈...

下面是按照天天統計出來的熱點圖,如圖可看出其實7點左右支付的人最少最適合更新代碼!

相關文章
相關標籤/搜索