2 回答
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格式,那么您会更轻松。如果您与我们分享您的脚本,我们可能会为您提供进一步帮助。
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 的输出转换为 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
- 2 回答
- 0 关注
- 166 浏览
添加回答
举报