自动化脚本之Shell、awk

来源:互联网 发布:Js代码高亮 编辑:程序博客网 时间:2024/05/21 14:20
    对整个工程中大量的工作日志、检测结果文件进行分析过滤,并统计和排序。这个绝对不是人干的活,不信你试试,两千多个文件,一天你也统计不完吧?

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

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

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

    工具:Linux Shell, awk

TOT_PATH=/home/pclint/outERR_REP=$TOT_PATH/report.txtERR_FILE=$TOT_PATH/err_mp_tmp.txt WAR_FILE=$TOT_PATH/warn_mp_tmp.txtERR_OFILE=$TOT_PATH/error_mp_sum.txt WAR_OFILE=$TOT_PATH/warning_mp_sum.txtTYPE=MPTPATH=/home/target/lint/mpALLDIRS="ps/commps/bssap...sig/tmsig"for TDIR in $ALLDIRSdo   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_FILEdonerm $ERR_OFILErm $WAR_OFILEsort -t: -r -n +1 $ERR_FILE >> $ERR_OFILEecho -e "---------------------\n\n..$TYPE ERROR TOP 5" >> $ERR_REPawk -F: '{if(NR<=5) print $0} {(tot+=$2)} END {print "ALL ERROR :" tot }' $ERR_OFILE >> $ERR_REPrm $ERR_FILEsort -t: -r -n +1 $WAR_FILE >> $WAR_OFILEecho -e "\n..$TYPE WARNING TOP 5" >> $ERR_REPawk -F: '{if(NR<=5) print $0} {(tot+=$2)} END {print "ALL WANRING :" tot }' $WAR_OFILE >> $ERR_REPecho "" >> $ERR_REPrm $WAR_FILE


0 0
原创粉丝点击