`
zhengdl126
  • 浏览: 2539036 次
  • 性别: 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处理二进制数据文件

    "巧用AWK处理二进制数据文件" AWK是Unix、Linux中处理文本的好工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示。但是,AWK的强大功能只针对纯文本文件,对于带有很多不可...

    用awk数组处理两个文件

    在Shell脚本编程中,`awk`是一种强大的文本分析工具,尤其在处理文件时非常有用。数组是`awk`中的一个重要概念,它允许我们存储和操作一组相关数据。本篇文章将详细讲解如何使用`awk`数组来处理两个文件,以及在不同...

    AWK文件处理总结

    ### AWK 文件处理总结 #### 一、AWK 入门篇 AWK 是一种强大的文本处理工具,常用于Linux/Unix环境下。它允许用户通过简单的脚本语言来进行复杂的文本处理任务。 **基本命令格式**: ```bash awk 'pattern { action...

    网站日志 .log文件

    分析.log文件通常需要专门的工具或编程语言,例如使用grep、awk、sed等Linux命令行工具,或者通过Python、Java、R等编程语言编写脚本。这些工具可以帮助我们提取特定信息,如查找特定IP的访问记录、统计404错误、...

    awk处理两个文件的方法

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

    NS2 分析网络性能的AWK文件

    AWK是一种强大的文本分析语言,非常适合处理结构化的文本文件。在这个场景中,自编的AWK脚本被设计来解析NS2的TRACE文件,提取关于网络性能的关键指标。这些指标可能包括: 1. **吞吐量(Throughput)**:衡量网络...

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

    这篇文章将介绍如何使用 awk 实现该功能,并提供了一个示例 awk 脚本来合并多个文件的结果列。 在 NS 模拟结果中,经常需要对多组参数的结果进行比较来鉴别性能的优劣。例如,在 NS 模拟结果中,可能会出现多个网络...

    awk文本处理工具

    awk可以从标准输入、文件或者其他命令的输出中获取数据,并通过自定义函数和动态正则表达式等功能,支持复杂的文本处理逻辑。 awk处理文本和数据的基本原理是逐行扫描文件,从文件的第一行开始,直到最后一行。它...

    unix shell awk 修改ini文件的脚本

    ### Unix Shell Awk 修改Ini 文件的脚本 在Unix环境下,对配置文件(尤其是INI格式的文件)进行处理是一项常见的需求。...虽然脚本相对简单,但它为理解和应用Unix Shell和Awk处理复杂文本文件提供了很好的示例。

    AWK用法AWK用法AWK用法

    根据提供的文件标题、描述、标签以及部分内容,我们可以深入探讨AWK这一强大的文本处理工具的用法及特性。AWK是一种编程语言,专为文本处理设计,尤其适合在Linux或Unix环境中进行数据处理与分析。 ### AWK命令示例...

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

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

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

    在IT行业中,日志分析是一项至关重要的任务...总的来说,通过使用Java的多线程能力和自定义规则,我们可以构建一个高效且灵活的Nginx Access Log分析器,超越传统的AWK解决方案,为IT运维人员提供强大的日志处理工具。

    提取leach图像的awk文件

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

    awk教程入门到精通

    awk 的主要用途是处理文本文件,提取和处理数据,生成报表等。下面是一份 awk 教程,从基础知识到高级应用,涵盖了 awk 的基本概念、语法、函数和应用实例。 awk 基础知识 awk 的基本结构是 pattern{action},其中...

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

    1. **日志文件分析**: awk经常用于分析和处理大量的日志文件,帮助快速查找特定的信息或统计关键数据。 2. **配置文件处理**: 对于需要解析和修改的配置文件,awk能够轻松实现自动化处理。 3. **文本数据处理**: 如...

    高效awk编程

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

    awk思维导图-jpeg单文件

    awk是Linux/Unix环境中强大的文本分析工具,它允许用户通过指定模式来处理和操作文本文件。这个"awk思维导图.jpeg单文件"很显然是为了帮助初学者更好地理解和掌握awk命令的工作原理及其应用。思维导图通常以图形化的...

    ass109.awk

    awk是一种强大的文本分析工具,它允许用户通过模式匹配和处理来操作文本文件。在Oracle社区中,开发者和DBA们经常利用awk的强大功能来解析和理解复杂的trace文件,以便快速定位问题。"ass109.awk" 就是这样一款专门...

Global site tag (gtag.js) - Google Analytics