为了账号安全,请及时绑定邮箱和手机立即绑定

将 shell 脚本结果转换为 HTML 表

将 shell 脚本结果转换为 HTML 表

慕尼黑8549860 2023-10-04 15:12:37
请帮助我通过电子邮件将 shell 脚本的结果转换为 HTML 表。我编写了一个 shell 脚本,它将给出以下格式的输出。Directory Name: /a/b/cBusiness Date: 20200323Expected_files_1:2Expected_files_2:14Actual_files_1: File count changes each dayActual_files_2: File count changes each dayComments of Actual_files_1Comments of Actual_files_2Other Comments我想使用 shell 脚本将上述结果转换为 HTML 表。预期的 HTML 表格:该表应始终包含两行,一行是标题,另一行是脚本中的变量值。第一行是 HTML 表格的标题,它将始终保持不变。第二个表的值每天都会变化。由于我是 HTML/Shell 脚本编写的初学者,所以我不知道如何编写一个脚本来给出上述 HTML 格式的结果。任何帮助,将不胜感激
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

假设您的输出存储在/tmp/output.txt中,请尝试以下操作:


./yourscript.sh > /tmp/output.txt

awk -F ':' 'BEGIN { print "<html>\n<body>\n<table>\n\t<tr>" } { print "\t\t<th>"$1"</th>" } END { print "\t</tr>" }' /tmp/output.txt

awk -F ':' 'BEGIN { print "\t<tr>" } { print "\t\t<td>"$2"</td>" } END { print "\t</tr>\n</table>\n</body>\n</html>" }' /tmp/output.txt

返回


<html>

<body>

<table>

        <tr>

                <th>Directory Name</th>

                <th>Business Date</th>

                <th>Expected_files_1</th>

                <th>Expected_files_2</th>

                <th>Actual_files_1</th>

                <th>Actual_files_2</th>

                <th>Comments of Actual_files_1</th>

                <th>Comments of Actual_files_2</th>

                <th>Comments Other</th>

        </tr>

        <tr>

                <td> /a/b/c</td>

                <td> 20200323</td>

                <td>2</td>

                <td>14</td>

                <td> File count changes each day</td>

                <td> File count changes each day</td>

                <td></td>

                <td></td>

                <td></td>

        </tr>

</table>

</body>

</html>

如果您确保脚本输出的每一行都具有相同的key: value格式,那么您会更轻松。如果您与我们分享您的脚本,我们可能会为您提供进一步帮助。


查看完整回答
反对 回复 2023-10-04
?
当年话下

TA贡献1890条经验 获得超9个赞

这是一个两步过程:


将列转置为行,使用冒号作为输入/输出分隔符:

awk -f tst.awk inputfile.txt > result.txt

tst.awk 包含以下代码:


BEGIN { FS=OFS=":" }

{

    for (rowNr=1;rowNr<=NF;rowNr++) {

        cell[rowNr,NR] = $rowNr

    }

    maxRows = (NF > maxRows ? NF : maxRows)

    maxCols = NR

}

END {

    for (rowNr=1;rowNr<=maxRows;rowNr++) {

        for (colNr=1;colNr<=maxCols;colNr++) {

            printf "%s%s", cell[rowNr,colNr], (colNr < maxCols ? OFS : ORS)

        }

    }

}

  1. 用于将点 1 的输出转换为 html 表格格式:有一个简单的脚本可用于执行此操作:https: //sourceforge.net/projects/command-output-to-html-table/可用于转换任何命令输出或文件为漂亮的 html 表格格式。您可以为此脚本指定分隔符,包括制表符、换行符等特殊分隔符,并通过顶部的 html 搜索获取 html 表格格式的输出。只需下载脚本,解压并发出以下命令:

cat result.txt | { cat ; echo ; } | ./tabulate.sh -d ":" -t "My Report" -h "My Report" > output.html

这里 : 作为分隔符。

我在这里附加了一个示例output.html:https ://sourceforge.net/projects/my-project-files/files/output.html/download


查看完整回答
反对 回复 2023-10-04
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信