免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3253 | 回复: 3
打印 上一主题 下一主题

[文本处理] awk 根据csv文件生成HTML表格,向高手寻求帮助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-31 11:57 |只看该作者 |倒序浏览
目标文件内容如下
1,act,secKill,172.24.138.91,0,0,0,34776,13386,/data/postmall/tomcat/webapps_act/secKill,2012/12/14
2,act,secKill,172.24.138.92,0,0,0,34776,13366,/data/postmall/tomcat/webapps_act/secKill,2012/12/14
3,act,secKill,172.24.138.93,0,0,0,34776,13366,/data/postmall/tomcat/webapps_act/secKill,2012/12/14
4,act,secKill,172.24.138.94,0,0,0,34776,13396,/data/postmall/tomcat/webapps_act/secKill,2012/12/14
5,act,groupbuy,172.24.138.64,9090,1,0,40670,26646,/data/postmall/tomcat/webapps_act/groupbuy,2012/12/14
6,act,groupbuy,172.24.138.123,9090,0,1,40670,26646,/data/postmall/tomcat/webapps_act/groupbuy,2012/12/14
7,act,lottery,172.24.138.64,9090,1,0,35311,18247,/data/postmall/tomcat/webapps_act/lottery,2012/12/14
8,act,lottery,172.24.138.123,9090,0,1,35311,18247,/data/postmall/tomcat/webapps_act/lottery,2012/12/14

生成的HTML文件类如


如果要生成下面这样,脚本应该怎么写



这里是我临摹的一段脚本,请高手不吝指教啊

#!/bin/sh
CSVFILE=$1
TD_STR=''

#this function create a <td> block
create_td()
{
  
    TD_STR2=`echo $1 | awk -F, '{if($6==1 || $7==1)for(i=1;i<=NF;i++)print "<td align=center bgColor=#FF33FF >"$i"</td>"; else f
or(i=1;i<=NF;i++)print "<td align =center >"$i"</td>"}'`
    TD_STR3=`echo $1 | awk 'BEGIN{FS=","}{i=1; while(i<=NF) {print "<td align=center bgColor=#008000 >"$i"</td>";i++}}'`
    }
    #this function create a row html script(<tr>block).
    create_tr()
    {
      create_td "$1"
#        echo  "<tr>$TD_STR1"
        echo  "<tr>$TD_STR2<tr/>"
        }
        #create html script head
        create_html_head()
        {
        echo "<table  width=500 align=center >"
        echo "<td <font color=blue align=right>`date "+%Y%m%d"`</td>"
        echo "</table>"
        echo "<html><body>"
        echo "<table border=1 borderColor=#ff9900 width=500 align=center >"
#       echo "<td align=center bgColor=#ff9900>ID</td>"
        echo "<td align=center bgColor=#ff9900>type</td>"
        echo "<td align=center bgColor=#ff9900>module</td>"
        echo "<td align=center bgColor=#ff9900>app</td>"
        echo "<td align=center bgColor=#ff9900>ip</td>"
        echo "<td align=center bgColor=#ff9900>port</td>"
        echo "<td align=center bgColor=#ff9900>portsta</td>"
                echo "<td align=center bgColor=#ff9900>status</td>"
                        echo "<td align=center bgColor=#ff9900>version</td>"
                                echo "<td align=center bgColor=#ff9900>size</td>"
                                        echo "<td align=center bgColor=#ff9900>path</td>"
                                                echo "<td align=center bgColor=#ff9900>url</td>"
                                                        echo "<td align=center bgColor=#ff9900>time</td>"
          }
          #create html script end
          create_html_end()
          {
            echo  "</body></html>"
            }
            create_table_head()
            {
              echo  #"<table border="1">"
              }
              create_table_end()
              {
                 echo  "</table>"
                 }
                 create_html_head
                 create_table_head
                 while read LINE
                 do
                  # echo "$LINE"
                    create_tr "$LINE"
                    done < $CSVFILE
                    create_table_end
                    create_html_end

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2012-12-31 14:03 |只看该作者
楼主,先别急着自动生成,
你先手工写一下那个表格的html代码,然后告诉大家代码和数据的逻辑关系
如果你自己都描述不清楚逻辑关系,你只能寄希望于回答都既是大神汉又是傻小子了

论坛徽章:
0
3 [报告]
发表于 2012-12-31 14:09 |只看该作者
回复 2# waker


其实逻辑就是第二列相同的话,然后就把相同的行归并起来,第三列也相同处理啊。关于这个没有强调出来,抱歉


   

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2012-12-31 14:15 |只看该作者
建议你先手工写一下那个表格的html代码,然后告诉大家代码和数据的逻辑关系

当然只是建议
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP