自动化脚本之Shell、awk

    对整个工程中大量的工作日志、检测结果文件进行分析过滤,并统计和排序。这个绝对不是人干的活,不信你试试,两千多个文件,一天你也统计不完吧?

    目标:将Pclint的检测结果进行分析,对其中的错误和告警项进行统计,其他的Info等项不需要。在统计完成之后,对各模块的数量进行排序。并且对排名前5的上红榜。

    输入:各个模块中每个c文件形成的检测报告txt文件;每个模块的相对路径。

    输出:过滤、统计、排序结果。排名前五的“优秀模块”名单。

    工具:Linux Shell, awk

TOT_PATH=/home/pclint/out
ERR_REP=$TOT_PATH/report.txt
ERR_FILE=$TOT_PATH/err_mp_tmp.txt 
WAR_FILE=$TOT_PATH/warn_mp_tmp.txt
ERR_OFILE=$TOT_PATH/error_mp_sum.txt 
WAR_OFILE=$TOT_PATH/warning_mp_sum.txt
TYPE=MP

TPATH=/home/target/lint/mp
ALLDIRS="ps/comm
ps/bssap
...

sig/tm
sig"

for TDIR in $ALLDIRS
do
   cd $TPATH/$TDIR
   rm error_total.txt
   rm warning_total.txt
   grep -c --regexp='[0-9]\{1,5\}..Error.[0-9]\{1,5\}' *.txt | sort -t: -r -n +1 >>error_total.txt
   awk -F: '{(tot+=$2)}; END {print "'$TDIR':" tot} ' error_total.txt >>$ERR_FILE
   grep -c --regexp='[0-9]\{1,5\}..Warning.[0-9]\{1,5\}' *.txt | sort -t: -r -n +1 >>warning_total.txt
   awk -F: '{(tot+=$2)}; END {print "'$TDIR':" tot} ' warning_total.txt >>$WAR_FILE
done

rm $ERR_OFILE
rm $WAR_OFILE

sort -t: -r -n +1 $ERR_FILE >> $ERR_OFILE
echo -e "---------------------\n\n..$TYPE ERROR TOP 5" >> $ERR_REP
awk -F: '{if(NR<=5) print $0} {(tot+=$2)} END {print "ALL ERROR :" tot }' $ERR_OFILE >> $ERR_REP
rm $ERR_FILE

sort -t: -r -n +1 $WAR_FILE >> $WAR_OFILE
echo -e "\n..$TYPE WARNING TOP 5" >> $ERR_REP
awk -F: '{if(NR<=5) print $0} {(tot+=$2)} END {print "ALL WANRING :" tot }' $WAR_OFILE >> $ERR_REP
echo "" >> $ERR_REP

rm $WAR_FILE


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值