使用bash脚本分析日志
背景
总所周知,线上交易程序不能轻易修改代码,以防止出现不必要的错误。
但于此同时,在进行交易信息分析时,部分需要根据原始数据计算才能得到的指标无法直接获取,而且日志信息比较杂乱,不便汇总分析,因此可以使用bash脚本对日志进行分析。
ps:经过几天时间的学习,我写了一个简单的日志分析脚本,分享一下大致思路,如果哪位同学有更好的解决方式,欢迎指教。
使用命令
for, if, sed, grep, awk, echo, date
实现过程
- 先截取 $timeInterval 天内的日志,进行分析
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
- 获取每次交易开始的行号,两个相邻的开始行号之间就是一次交易的日志
grep -niR "predictOpptunity start" $file |awk -F ":20" '{print $1}'
- 使用sed命令截取两个行号之间的日志,然后截取需要的字段进行简单的计算
- 打印截取的字段和计算结果
详细代码:https://download.csdn.net/download/zzz19920821/10746823