如何使用shell/bash将txt转换为html格式

问题描述 投票:0回答:2

我的文本文件中有以下数据:

Details_A
name: A1
Valid: A1_Value
name: A2
Valid: A2_Value
Details_A2
name: A2
Valid: A2_Value
name: A2
Valid: A2_Value

我正在尝试将其转换为下面的 html 表:

详情

html bash shell awk aix
2个回答
4
投票

您可以像这样使用

awk

awk 'BEGIN { 
        x = 0;
        print "<table border="1">"
    }
    {
        if (NF == 1){
            print "<tr ><td colspan="2">"$i"</td>";
            print "</tr>"
        } else {
            if (x == 0){
                x++;
                print "<tr><td>"$i"</td>"
            } else {
                x = 0;
                print "<td>"$i"</td></tr>"
            }
        }
    }
    END {
        print "</table>"
    }' input.txt > table.html

随意添加任何其他样式

对于旧版本的

awk
,您可以使用以下内容,已在 2009-11-26 的
awk
实现上进行测试(来自 one-true-awk):

awk  'BEGIN {
        x = 0;
        y = 0;
        print "<table border="1">"
    }
    {
        for (i = 1; i<=NF ; i++){

            if (NF == 1){
                print "<tr ><td colspan="2">"$i"</td></tr>";
            } else {

                if (x == 0 && y == 0){
                    print "<tr><td>"$i" ";
                    x++;
                }
                else if (x == 0 && y == 1){
                    print "<td>"$i" ";
                    x++;
                }
                else if (x==(NF-1)){
                    x = 0;
                    y++;
                    if (y == 2){
                        y = 0;
                        print ""$i"</td></tr>";
                    }
                    else{
                        print ""$i"</td>";
                    }
                }
                else {
                    print ""$i" ";
                    x++;
                }
            }
        }
    }
    END {
        print "</table>"
    }' input.txt > table.html

对于最后一个版本,

x
在每个空格分隔符处递增,直到到达最后一个单词
NF-1
,我们应该添加结尾
</td>
。结束
</tr>
的决定取决于
y
的值,该值在每行递增,并在达到
<td>
的最大计数时重新初始化(这里每个
<td>
有2个
<tr>


0
投票

此代码在直接触发时有效,但 cronjob 则不起作用

错误:awk 命令无法读取 input.txt 文件。请推荐。

© www.soinside.com 2019 - 2024. All rights reserved.