有時候在工作中,我們需要對日志進行處理,這里我對我碰到的一些進行總結(jié)
-
提取數(shù)據(jù)
首先可以打開日志,查看下結(jié)構(gòu)
image.png
這里可以看到日志數(shù)據(jù)
image.png
?我們一般需要拿到訪問某個接口的uid,time,app版本,登錄手機的平臺等信息
首先我們先定位接口的數(shù)據(jù):
? 格式這樣:grep 查詢的關鍵字 查詢文件grep getArticleInfo ysz-gateway-2018_06_07-1.logimage.png
?如圖,我們拿到了所有這個接口的相關數(shù)據(jù),
?我們這里需要提取這里的數(shù)據(jù)比如,我們要uid,這里我們需要管道處理
? 解釋下管道:我的理解大意是前邊的結(jié)果作為參數(shù)傳給后邊處理,實際用多了,你們就體會到了,grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid
?獲取到這個接口包含uid的行

image.png
?如下圖,我們要提取[]里的內(nèi)容,這里處理方法很多,我一般用awk

image.png
grep getArticleInfo ysz-gateway-2018_06_07-1.log | grep uid|awk -F "data:" '{print $2}'
這里awk -F是截取,這里是以data:為分割,輸出第二段內(nèi)容

image.png
和一般的json還差點啥,應該是去掉[],我們這里還是用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'

image.png
管道繼續(xù),有時候我們要去重,我們可以對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ù)

image.png
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

image.png
可以看到去重以后由145變成了92,
現(xiàn)在就拿到數(shù)據(jù)了,至于后邊數(shù)據(jù)分析,我們后邊會講到


