Linux:使用bash指令碼分析日誌(交易資訊日誌分析)
阿新 • • 發佈:2018-11-03
使用bash指令碼分析日誌
背景
總所周知,線上交易程式不能輕易修改程式碼,以防止出現不必要的錯誤。
但於此同時,在進行交易資訊分析時,部分需要根據原始資料計算才能得到的指標無法直接獲取,而且日誌資訊比較雜亂,不便彙總分析,因此可以使用bash指令碼對日誌進行分析。
ps:經過幾天時間的學習,我寫了一個簡單的日誌分析指令碼,分享一下大致思路,如果哪位同學有更好的解決方式,歡迎指教。
使用命令
for, if, sed, grep, awk, echo, date
實現過程
- 擷取最近幾天的日誌,重新儲存,對固定時間段的日誌進行分析
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天前到最近的日誌,但是當開始時間沒有日誌時,會報錯,或許可以做個判斷,不知道有沒有更好的解決辦法,苦惱。。。
- 獲取每次交易開始的行號,兩個相鄰的開始行號之間就是一次交易的日誌
grep -niR "predictOpptunity start" $file |awk -F ":20" '{print $1}'
- 使用sed命令擷取兩個行號之間的日誌,然後擷取需要的欄位進行簡單的計算
- 列印擷取的欄位和計算結果
詳細程式碼:https://download.csdn.net/download/zzz19920821/10746823