基于配置文件检测结果生成表格结果

#!/bin/bash
# by hzwuboxiao

rm -rf ./mail/messageContent/"$2".html
#总述文件
comment=./mail/messageContent/messageContent."$2".txt
#环境个数,目的是为了统计各个环境下面的工程的个数,以便确定表格的行数
envnums=`grep "环境" $comment | wc -l`
echo "envnums="$envnums
#先创建一个结果文件吧
touch ./mail/messageContent/"$2".html
resulthtml=./mail/messageContent/"$2".html
#先把表头写进去
echo "<html><head></head><body><table border=‘1‘ cellspacing=‘0‘ width=‘1000‘><tr align=‘center‘><td>环境名</td><td>工程名</td><td>缺少的配置文件个数</td><td>缺失的配置项个数</td><td>错误的配置项个数</td></tr>" >> $resulthtml
#开始创建表格了,应该要用一个循环
env_count_pos=1
while [[ $env_count_pos -le $envnums ]];do
    echo "当前大小:"$env_count_pos"=-=-=-=-=-=-=当前环境个数"$envnums
    #如果要处理的是最后一个环境
    if [[ $env_count_pos -eq $envnums ]];then
	#先找到当前环境下有多少个工程,以便确定表格占用的行数
        #env_item_pre:最后一个"环境"所在的行数
        env_item_pre=`grep -n "环境" $comment | head -"$env_count_pos" | tail -1 | awk -F ‘:‘ ‘{print $1}‘`
        #env_name:环境名称
        env_name=`cat $comment | sed -n "$env_item_pre"p | awk -F ‘环境‘ ‘{print $1}‘`
        echo "环境名:"$env_name
        #env_item_last:总述文件的行数
        env_item_last=`cat $comment | wc -l`
        echo "env_item_pre"$env_item_pre"-----------env_item_last"$env_item_last
        echo "<tr align=‘center‘><td rowspan=‘"$((env_item_last-env_item_pre-1))"‘>$env_name</td>" >> $resulthtml
        #先处理当前环境下的第一个工程
        proj_name=`cat $comment | sed -n "$((env_item_pre+1))"p | awk -F ‘工程‘ ‘{print $1}‘`
        nums=`cat $comment | sed -n "$((env_item_pre+1))"p | grep -o ‘[0-9]\+‘`
        lost_files=`echo $nums | awk -F ‘ ‘ ‘{print $1}‘`
        lost_items=`echo $nums | awk -F ‘ ‘ ‘{print $2}‘`
        wrong_items=`echo $nums | awk -F ‘ ‘ ‘{print $3}‘`
        echo "<td>"$proj_name"</td><td>"$lost_files"</td><td>"$lost_items"</td><td>"$wrong_items"</td></tr>" >> $resulthtml

        awk ‘NR>‘"$((env_item_pre+1))"‘ && NR<‘"$env_item_last" $comment | while read eachitem
            do
                #处理每一行,也就是每一个工程的总述,即类似于下面这行:
                #credits工程:缺少1个配置文件,1个配置项,对比标准配置文件,有0个错误配置项
                #先获取工程名
                proj_name=`echo $eachitem | awk -F ‘工程‘ ‘{print $1}‘`
                #再获取上面的1 1 和 0三个数字
                nums=`echo $eachitem | grep -o ‘[0-9]\+‘`
                lost_files=`echo $nums | awk -F ‘ ‘ ‘{print $1}‘`
                lost_items=`echo $nums | awk -F ‘ ‘ ‘{print $2}‘`
                wrong_items=`echo $nums | awk -F ‘ ‘ ‘{print $3}‘`
                echo "<tr align=‘center‘><td>"$proj_name"</td><td>"$lost_files"</td><td>"$lost_items"</td><td>"$wrong_items"</td></tr>" >> $resulthtml
            done
        ((env_count_pos++))
        #这个break一定要加
        break
    fi
    echo "当前指标大小:"$env_count_pos
    #要处理的不是最后一个环境
    env_item_pre=`grep -n "环境" $comment | head -"$env_count_pos" | tail -1 | awk -F ‘:‘ ‘{print $1}‘`
    #env_name:环境名称
    env_name=`cat $comment | sed -n "$env_item_pre"p | awk -F ‘环境‘ ‘{print $1}‘`
    #env_item_next:下一个“环境”所在的行数
    echo "环境名"$env_name
    env_item_next=`grep -n "环境" $comment | head -"$((++env_count_pos))" | tail -1 | awk -F ‘:‘ ‘{print $1}‘`
    echo "env_item_pre"$env_item_pre"-----------env_item_next"$env_item_next
    echo "<tr align=‘center‘><td rowspan=‘"$((env_item_next-env_item_pre-2))"‘>$env_name</td>" >> $resulthtml
    #先处理当前环境下的第一个工程
    proj_name=`cat $comment | sed -n "$((env_item_pre+1))"p | awk -F ‘工程‘ ‘{print $1}‘`
    nums=`cat $comment | sed -n "$((env_item_pre+1))"p | grep -o ‘[0-9]\+‘`
    lost_files=`echo $nums | awk -F ‘ ‘ ‘{print $1}‘`
    lost_items=`echo $nums | awk -F ‘ ‘ ‘{print $2}‘`
    wrong_items=`echo $nums | awk -F ‘ ‘ ‘{print $3}‘`
    echo "<td>"$proj_name"</td><td>"$lost_files"</td><td>"$lost_items"</td><td>"$wrong_items"</td></tr>" >> $resulthtml
    awk ‘NR>‘"$((env_item_pre+1))"‘ && NR<‘"$((env_item_next-1))" $comment | while read eachitem
        do
            #处理每一行,也就是每一个工程的总述,即类似于下面这行:
            #credits工程:缺少1个配置文件,1个配置项,对比标准配置文件,有0个错误配置项
            #先获取工程名
            proj_name=`echo $eachitem | awk -F ‘工程‘ ‘{print $1}‘`
            #再获取上面的1 1 和 0三个数字
            nums=`echo $eachitem | grep -o ‘[0-9]\+‘`
            lost_files=`echo $nums | awk -F ‘ ‘ ‘{print $1}‘`
            lost_items=`echo $nums | awk -F ‘ ‘ ‘{print $2}‘`
            wrong_items=`echo $nums | awk -F ‘ ‘ ‘{print $3}‘`
            echo "<tr align=‘center‘><td>"$proj_name"</td><td>"$lost_files"</td><td>"$lost_items"</td><td>"$wrong_items"</td></tr>" >> $resulthtml
        done
     echo "<tr><td colspan=‘5‘></td></tr>" >> $resulthtml
    ((env_count_pos++))
done
echo "</table></body></html>" >> $resulthtml

配置文件格式如下:

performance环境
credits工程:缺少1个配置文件,1个配置项,对比标准配置文件,有0个错误配置项
global-ms工程:缺少1个配置文件,19个配置项,对比标准配置文件,有0个错误配置项
disconf工程:缺少0个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
haitaowap工程:缺少1个配置文件,1个配置项,对比标准配置文件,有0个错误配置项
haitao-web工程:缺少1个配置文件,4个配置项,对比标准配置文件,有0个错误配置项
global-cacheIndex工程:缺少0个配置文件,5个配置项,对比标准配置文件,有0个错误配置项
haitao工程:缺少3个配置文件,177个配置项,对比标准配置文件,有0个错误配置项
account工程:缺少0个配置文件,2个配置项,对比标准配置文件,有0个错误配置项
cps-platform工程:缺少2个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
global-online工程:缺少0个配置文件,6个配置项,对比标准配置文件,有0个错误配置项
haitao-matter工程:缺少0个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
haitao-pay工程:缺少0个配置文件,78个配置项,对比标准配置文件,有0个错误配置项

stable环境
credits工程:缺少1个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
global-ms工程:缺少1个配置文件,19个配置项,对比标准配置文件,有0个错误配置项
disconf工程:缺少0个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
haitaowap工程:缺少1个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
haitao-web工程:缺少1个配置文件,4个配置项,对比标准配置文件,有0个错误配置项
global-cacheIndex工程:缺少0个配置文件,8个配置项,对比标准配置文件,有0个错误配置项
haitao工程:缺少5个配置文件,190个配置项,对比标准配置文件,有0个错误配置项
account工程:缺少0个配置文件,2个配置项,对比标准配置文件,有0个错误配置项
cps-platform工程:缺少2个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
global-online工程:缺少1个配置文件,6个配置项,对比标准配置文件,有0个错误配置项
haitao-matter工程:缺少0个配置文件,0个配置项,对比标准配置文件,有0个错误配置项
haitao-pay工程:缺少0个配置文件,79个配置项,对比标准配置文件,有0个错误配置项

效果如下图:

时间: 2024-10-03 13:40:04

基于配置文件检测结果生成表格结果的相关文章

Spring框架笔记(二十三)——基于配置文件的方式来配置 AOP

配置实现IOC功能时,我们采用了配置文件xml和注解两类方式实现.实现AOP功能时我们也可以使用两种方式.前面我们介绍了AOP基于注解的实现方式,本文我将采用基于配置文件的方式完成从原始对象bean.切面bean.切点及通知配置的方法. 用基于 XML 的配置声明切面 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常情况下, 基于注解的声明要优先于基于 XML 的声明. 通过

C#实现动态生成表格的方法

本文以实例形式展现了C#实现动态生成表格的方法,分享给大家供大家参考之用.具体方法如下: public string CreateTable() { StringBuilder sb = new StringBuilder(""); int row = 1;//行数 if (true )//是否有数据 { int nRowCount = 10;//所有条数 row = (int)Math.Ceiling(nRowCount / 5.0);//5.0表示每行有多少条数据 int colN

keepalived+lvs基于http检测

keepalived+lvs基于http检测 keepalived+lvs基于tcp检测无法探测到后端的Java程序是否假死,所以此时就需要用到基于http的检测方法.基于http检测的原理是检测后端服务器上的某个页面,如果能获取到则表示后端服务器存活,否则表示后端服务器故障.语法格式 HTTP_GET { #基于http做后端服务器的健康状态检测 url { # path /path/to/page #指定所要检测页面做在的位置 status_code XXX #状态码一般为200 } con

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

Android 自动生成表格

Layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

Android动态生成表格

最近刚刚学习完Android的五大布局,现在我们进一步深入学习,尝试做一个动态生成表格功能的例子 样式布局代码如下: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4

PHP 循环检测并生成目录 chkDir($dirname,$split=&#39;/&#39;)

自己写的,在MVC框架里面可以直接使用! /** * @author F.Z.B <[email protected]> * @description 循环检测目录 * * @param $dir * @param string $split * * @return bool */ function chkDir($dir, $split = '/') { preg_match_all('/([^\/]+)\/?/', str_replace('\\', '/', trim($dir)), $

spring Quartz基于配置文件和注解的实现

这里仅仅是做简单的记录怎样实现. 一.基于配置文件的实现 ①编写须要调度的类 package com.study; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; //@Component public class QuartzJob { public QuartzJob(){ System.out.println("Quart

mybatis与spring整合(基于配置文件)(转)

mybatis与spring整合(基于配置文件) 本文主要介绍了如何将mybatis和spring整合在一起使用,本人使用的是mybatis3.05 + spring3.1.0M2 ,使用dbcp作为数据库连接池. 1.编写数据访问接口(UserDao.java) package com.mybatis; publicinterface UserDao { publicint countAll(); } 2.编写数据访问接口映射文件(UserDaoMapper.xml) <?xml versio