`
zhengdl126
  • 浏览: 2512807 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

awk分析处理jenkins的log文件并生成HTML文件

 
阅读更多

 

 

 

#!/bin/bash
a=$1




##### ================pmd

log_xml="/var/www/html/yii/build/logs/pmd.xml"
export_html="/var/www/html/yii/build/logs/shell_email.html"

#多少报错文件
file_num=$(awk '{if($1~/<file/) print $2}' $log_xml | awk -F \" '{print $2}' |wc -l)

#多少message
#mess_num=$(awk -F \" '{if($1~/<violation/) print $2,$6,$8}' /var/www/html/yii/build/logs/pmd.xml |wc -l)
mess_num=$(awk '/<violation/{line++}END{print line}' $log_xml )

#详细列表
rs="<table border=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td height=\"22\" class=\"bg1\" colspan=\"4\"><p style=\"color:#FFFFFF\"><strong>PMD Result (files:$file_num  messages:$mess_num)</strong></p></td></tr><tr><td height=\"22\" bgcolor=\"#4040FF\">No</td><td height=\"22\" bgcolor=\"#4040FF\">Code num</td><td height=\"22\" bgcolor=\"#4040FF\">Message</td><td height=\"22\" bgcolor=\"#4040FF\">File</td></tr>"


#rs2=$(awk -F \" '/<file/{a=$2}/\<violation/{print "<tr><td>",i++,"</td><td>","<tr><td>",$2,"</td><td>",$8,"</td><td>",a,"</td></tr>"}' $log_xml |grep -v "<tr><td></td><td>")
rs2=$(awk -F \" '/<file/{a=$2}/<violation/{print "<tr><td>",++i,"</td><td>",$2,"</td><td>",$8,"</td><td>",a,"</td></tr>"}' $log_xml )

#IFS_old=$IFS
#IFS=$'\n'
#for loop in $aa
#do
#rs2="$rs2 <tr><td>$loop</td></tr>"
#done


echo "$rs $rs2</table><br><br>" > $export_html
#echo "$rs $rs2</table>" > /var/www/html/shell_email.html
#IFS=$IFS_old




##### ================checkstyle

log_xml="/var/www/html/yii/build/logs/checkstyle.xml"

#多少报错文件
file_num=$(awk '{if($1~/<file/) print $2}' $log_xml | awk -F \" '{print $2}' |wc -l)


#多少message
#mess_num=$(awk -F \" '{if($1~/<error/) print $6,$2,$8}' /var/www/html/yii/build/logs/checkstyle.xml |wc -l)
mess_num=$(awk '/<error/{line++}END{print line}' $log_xml)


#多少error
mess_num_error=$(awk '/severity=\"error\"/{line++}END{print line}' $log_xml)

#多少warnings
mess_num_warnings=$(awk '/severity=\"warning\"/{line++}END{print line}' $log_xml)

#详细列表
rs="<table border=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td height=\"22\" class=\"bg1\" colspan=\"5\"><p style=\"color:#FFFFFF\"><strong>Checkstyle Result (files:$file_num  messages:$mess_num error:$mess_num_error warnings:$mess_num_warnings)</strong></p></td></tr><tr><td height=\"22\" bgcolor=\"#4040FF\">No</td><td height=\"22\" bgcolor=\"#4040FF\">Type</td><td height=\"22\" bgcolor=\"#4040FF\">line</td><td height=\"22\" bgcolor=\"#4040FF\">Message</td><td height=\"22\" bgcolor=\"#4040FF\">File</td></tr>"


#rs2=$(awk -F \" '/<file/{a=$2} /<error/{print "<tr><td>",++i,"</td><td>",$6,"</td><td>",$2,"</td><td>",$8,"</td><td>",a,"</td></tr>"}' $log_xml | grep -v "<tr><td></td><td></td><td>")
rs2=$(awk -F \" '/<file/{a=$2}/<error/{print "<tr><td>",++i,"</td><td>",$6,"</td><td>",$2,"</td><td>",$8,"</td><td>",a,"</td></tr>"}' $log_xml )

#IFS_old=$IFS
#IFS=$'\n'
#for loop in $aa
#do
#rs2="$rs2 <tr><td>$loop</td></tr>"
#done


echo "$rs $rs2</table><br><br>" >> $export_html
#echo "$rs $rs2</table>" > /var/www/html/shell_email.html
#IFS=$IFS_old




##### ================jslint

log_xml="/var/www/html/jslint/out/data/log.xml"

#多少报错文件
file_num=$(awk -F \" '{if($1~/<Violation/) print $8}' $log_xml | grep -v "js_all.js" | uniq  |wc -l)

#多少message
#mess_num=$(awk -F \" '{if($1~/<Violation/) print $2,$6,$8,$9}' /var/www/html/jslint/out/data/log.xml | grep -v "js_all.js" |wc -l)
mess_num=$(awk '/<Violation/{line++}END{print line}' $log_xml | grep -v "js_all.js")

#详细列表
rs="<table border=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td height=\"22\" class=\"bg1\" colspan=\"6\"><p style=\"color:#FFFFFF\"><strong>JSlint Result (files:$file_num  messages:$mess_num)</strong></p></td></tr><tr><td height=\"22\" bgcolor=\"#4040FF\">No</td><td height=\"22\" bgcolor=\"#4040FF\">type</td><td height=\"22\" bgcolor=\"#4040FF\">line</td><td height=\"22\" bgcolor=\"#4040FF\">reason</td><td height=\"22\" bgcolor=\"#4040FF\">File</td><td height=\"22\" bgcolor=\"#4040FF\">code</td></tr>"


#rs2=$(awk -F \" '{if($1~/<Violation/) print "<tr><td>"$4,"</td><td>",$6,"</td><td>",$9,"</td><td>",$8,"</td></tr>"}' /var/www/html/jslint/out/data/log.xml |grep -v "<tr><td></td><td>" | grep -v "js_all.js")

rs2=$(awk -F'"' '/Evidence/{gsub(/\/\/.*/,"",$2);gsub(/_/,"/",$8);sub(/>/,"",$9);sub(/<\/Violation>/,"",$9);sub(/\/var\/www\/html\//,"",$8);print "<tr><td>",++i,"</td><td>",$4,"</td><td>",$6,"</td><td>",$9,"</td><td>",$8,"</td><td>",$2"</td></tr>"}' $log_xml )


#IFS_old=$IFS
#IFS=$'\n'
#for loop in $aa
#do
#rs2="$rs2 <tr><td>$loop</td></tr>"
#done


echo "$rs $rs2</table>" >> $export_html

##### ================gjslint

log_xml="/tmp/gjslint.log"
/bin/touch $log_xml

if [[ $a = gjslint ]] ;then
/usr/bin/gjslint -r /var/www/html/yii/blog/www/js/ > $log_xml
fi

#多少报错文件
file_num=$(awk '/-----/{line++}END{print line}' $log_xml)

#多少message
mess_num=$(awk '/Line/{line++}END{print line}' $log_xml )


#详细列表
rs="<table border=\"0\" cellpadding=\"0\" width=\"100%\"><tr><td height=\"22\" class=\"bg1\" colspan=\"3\"><p style=\"color:#FFFFFF\"><strong>gjslint Result (files:$file_num  messages:$mess_num)</strong></p></td></tr><tr><td height=\"22\" bgcolor=\"#4040FF\">No</td><td height=\"22\" bgcolor=\"#4040FF\">File</td><td height=\"22\" bgcolor=\"#4040FF\">Message</td></tr>"

rs2=$( awk -F \: '/-----/{gsub(/-----/,"",$2);gsub(/\/var\/www\/html\//,"",$2);a=$2} /Line/{print "<tr><td>",++i,"</td><td>",a,"</td><td>",$0,"</td></tr>"}' $log_xml )

echo "$rs $rs2</table><br><br>" >> $export_html

 

 

分享到:
评论

相关推荐

    用awk数组处理两个文件

    主要讲解了关于shell中用awk数组处理文件的用法

    巧用AWK处理二进制数据文件

    awk是unix,linux中处理文本的好工具,本文用一个实例说明awk脚本的编写及使用.

    AWK文件处理总结

    awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理awk文本的处理

    awk处理两个文件的方法

    用awk处理两个文件的方法:特定域的合并、替换等

    NS2 分析网络性能的AWK文件

    自己编写的经过验证的AWK文件, 用于分析NS2中的TRACE文件,来 解析网络性能,保证可以用,但是不同的 机子会有不同的效果,大家改一些绝对可以用。

    生成awk测试文件的shell脚本文件

    生成awk测试文件的shell脚本文件,文件共有两个参数(可全部留空),第一个参数是生成的新文件名称,第二个参数是key值名称,也就是内部的重复循环部分的字符串

    提取leach图像的awk文件

    提取leach图像的awk文件提取leach图像的awk文件提取leach图像的awk文件

    linuxawk将多个文件结果列合并到一个文件整理.pdf

    linuxawk将多个文件结果列合并到一个文件整理.pdf

    awk文本处理工具

    linux运维,文本处理三剑客之,awk文本处理工具。非常详细!

    高效awk编程

    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得...

    java版本awk日志分析

    优点:可分析大日志,大量文件,避免java分析大日志的数据量过大导致的内存泄漏问题。 高效,调用linux shell预筛选,不需加载日志加载的jvm内存。 快速,2-3G的文件可在几十秒内完成筛选,相对java代码分析日志...

    三剑客之【awk】.html

    加入了自己在平时运用中的实例,比如通过查询数据库生成csv文件或insert语句。将markdown文件转换成了html文件。 awk有许多强大的字符串函数 gsub(r,s) #在整个$0中,用s代替r gsub(r,s,t) 在整个t中,用s代替r ...

    shell awk脚本总结.txt

    我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    多线程自定义规则 Nginx Access Log 分析器(比AWK快)

    多线程自定义规则 Nginx Access Log 分析器(比AWK快)

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    unix shell awk 修改ini文件的脚本

    临到要用的时候发现unix下面通常都是用c实现的ini文件操作,网上搜了半天没有现成可用的,真是郁闷,只好自己写了一个,这个程序是对INI文件进行修改的,其实只要删掉几句就变成了查找的了

    awk工具的使用.html

    awk工具的使用.html

    awk用法小结--有关awk的材料

    1. awk非常适合于结构化的文本文件(行、列数据)复杂处理。相对于sed而言,它可进行复杂的编程处理,并且可以产生复杂的报表输出。 2. awk通常有三个版本,旧awk、nawk(新)、gawk。Solaris下建议用nawk,因为旧...

Global site tag (gtag.js) - Google Analytics