有時(shí)候在工作中,我們需要對(duì)日志進(jìn)行處理辉浦,這里我對(duì)我碰到的一些進(jìn)行總結(jié)
-
提取數(shù)據(jù)
首先可以打開日志弄抬,查看下結(jié)構(gòu)
這里可以看到日志數(shù)據(jù)
?我們一般需要拿到訪問某個(gè)接口的uid,time盏浙,app版本眉睹,登錄手機(jī)的平臺(tái)等信息
首先我們先定位接口的數(shù)據(jù):
? 格式這樣:grep 查詢的關(guān)鍵字 查詢文件grep getArticleInfo ysz-gateway-2018_06_07-1.log
?如圖,我們拿到了所有這個(gè)接口的相關(guān)數(shù)據(jù)废膘,
?我們這里需要提取這里的數(shù)據(jù)比如竹海,我們要uid,這里我們需要管道處理
? 解釋下管道:我的理解大意是前邊的結(jié)果作為參數(shù)傳給后邊處理丐黄,實(shí)際用多了斋配,你們就體會(huì)到了,grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid
?獲取到這個(gè)接口包含uid的行
?如下圖灌闺,我們要提取[]里的內(nèi)容艰争,這里處理方法很多,我一般用awk
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'
這里awk -F是截取桂对,這里是以data:為分割甩卓,輸出第二段內(nèi)容
和一般的json還差點(diǎn)啥,應(yīng)該是去掉[]蕉斜,我們這里還是用awk -F解決
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'
然后就推薦使用jq插件了应媚,yum install jq就可以安裝了,
我們使用方法煮纵,比如要拿到uid,就這么寫
繼續(xù)管道后續(xù)
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'
管道繼續(xù)爬范,有時(shí)候我們要去重,我們可以對(duì)uid排序弱匪,去重
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|wc -l 先看下行數(shù)
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'|awk -F "【" '{print $2}'|awk -F "】" '{print $1}'|jq '.uid'|sort|uniq|wc -l
可以看到去重以后由145變成了92青瀑,
現(xiàn)在就拿到數(shù)據(jù)了,至于后邊數(shù)據(jù)分析萧诫,我們后邊會(huì)講到