1. 程式人生 > >Linux:使用bash指令碼分析日誌(交易資訊日誌分析)

Linux:使用bash指令碼分析日誌(交易資訊日誌分析)

使用bash指令碼分析日誌

背景

總所周知,線上交易程式不能輕易修改程式碼,以防止出現不必要的錯誤。
但於此同時,在進行交易資訊分析時,部分需要根據原始資料計算才能得到的指標無法直接獲取,而且日誌資訊比較雜亂,不便彙總分析,因此可以使用bash指令碼對日誌進行分析。

ps:經過幾天時間的學習,我寫了一個簡單的日誌分析指令碼,分享一下大致思路,如果哪位同學有更好的解決方式,歡迎指教。

使用命令

for, if, sed, grep, awk, echo, date

實現過程

  1. 擷取最近幾天的日誌,重新儲存,對固定時間段的日誌進行分析
echo $timeInterval
if [ "$timeInterval" != "" ];then
	startDate=`date -d "${timeInterval} days ago" +%Y-%m-%d`
else
	#startDate=`date -d "100 days ago" +%Y-%m-%d`
	startDate="2018-10-01"
fi
endDate=`date -d "now" +%Y-%m-%d`
#最後一行的時間
lastLineDate=`tail -n 1 $file |awk -F '[ ]' '{print $2}'`
endDate=
"${endDate} ${lastLineDate}" #echo $endDate #擷取要分析的時間段的日誌 sed -n "/${startDate}/,/${endDate}/p" $file > analysistemp.log

ps:這個是擷取n天前到最近的日誌,但是當開始時間沒有日誌時,會報錯,或許可以做個判斷,不知道有沒有更好的解決辦法,苦惱。。。

  1. 獲取每次交易開始的行號,兩個相鄰的開始行號之間就是一次交易的日誌
grep -niR "predictOpptunity start" $file |awk -F ":20" '{print $1}'
  1. 使用sed命令擷取兩個行號之間的日誌,然後擷取需要的欄位進行簡單的計算
  2. 列印擷取的欄位和計算結果
    在這裡插入圖片描述

詳細程式碼https://download.csdn.net/download/zzz19920821/10746823