将.dat文件中的表转换为HTML表

时间:2016-10-18 11:48:38

标签: linux bash shell unix

我有一个.dat文件,它包含以下表格:

06:53:39     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
06:53:40     all    1.68    0.00    1.85    0.84    0.00    0.17    0.00   95.46   1335.64
06:53:40       0    2.97    0.00    0.99    2.97    0.00    0.99    0.00   92.08   1069.31
06:53:40       1    1.01    0.00    1.01    0.00    0.00    0.00    0.00   97.98      0.00


06:53:40     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
06:53:41     all    0.34    0.00    0.34    0.17    0.17    0.17    0.00   98.83   1145.00
06:53:41       0    0.00    0.00    1.00    2.00    0.00    0.00    0.00   97.00   1035.00
06:53:41       1    1.00    0.00    2.00    0.00    0.00    0.00    0.00   97.00      0.00


Average:     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
Average:     all    1.01    0.00    1.09    0.50    0.08    0.17    0.00   97.15   1240.80
Average:       0    1.49    0.00    1.00    2.49    0.00    0.50    0.00   94.53   1052.24
Average:       1    1.01    0.00    1.51    0.00    0.00    0.00    0.00   97.49      0.00

我正在尝试使用以下代码将其转换为HTML表格:

awk '
BEGIN{
    print "Content-Type: text/html; charset=us-ascii\n <html>\n <Body>\n<table>"
    } 
    {print "<tr>"
    for(i=1;i<=NF;i++)
        print "<td>" $i"</td>"
    print "</tr>"
    }
END{
    print "\n</Body>\n</html>\n</table>"
    }' file.dat >> file.html

此特定代码视为一个完整的HTML表并添加所有记录。正如您在.dat文件中看到的那样,它将内容分成3个表(将有许多表)。我需要将.dat文件中的每个表都创建为HTML文件中的单独表。如何调整我的代码以实现此目的,或者请提供一些示例代码?

谢谢,

1 个答案:

答案 0 :(得分:0)

如果你想不小心做 - 我建议允许Vim帮助你。

以下是将文件转换为HTML的简单步骤:

1)如果尚未安装vim,请安装vim

2)打开你的.dat文件

3)运行本机Vim脚本,将任何文本文件从Vim命令模式转换为HTML格式(按&#34; Escape&#34;按钮进入命令模式)

:runtime!syntax/2html.vim 

4)你将有一个带有HTML格式文本的新窗口。将其保存为与Vim命令模式不同的文件。

:w test.html

5)如果要通过shell脚本自动转换文件,可以使用一个自定义函数。但它会产生很大的开销,所以对于自动化我建议潜入awk。

vimhtml() { [[ -f "$1" ]] || return 1; vim +'syn on | run!syntax/2html.vim | wq | q' "$1";}
vimhtml try.dat

以下是转换后的情况。不要担心背景,你可以改变这个非常简单。

enter image description here