日誌樣本:
囧,日誌格式是我隨便定得(莫噴,在明珠時有專門的數據組統計日誌,日誌都很是規範,在這徹底亂套了),爲了方便統計支付成功的總金額旁邊都空了個空格,這樣的話方便使用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點左右支付的人最少最適合更新代碼!