【问题标题】:How to read from file and output to html table with AWK如何使用 AWK 从文件读取并输出到 html 表
【发布时间】:2020-05-11 08:29:35
【问题描述】:

我是 AWK 的新手,我知道这不是一个具体的问题。我只是需要一些建议,我该怎么做。

鉴于文件中的以下名称,author.list:


KOVACS PETER
Kiss Roland
Nagy jolan
Lisztes Tibor
Feher aNDRas
Korma Maria
Akarki Jack

编写一个 AWK 程序,该程序可以从文件中读取名称并将它们打印到输出文件中的三列格式的 html 表中,output.html。该表应该呈现如下:

    Kovacs Peter     Lisztes Tibor    Akarki Jack
    Kiss Roland      Feher Andras
    Nagy Jolan       Korma Maria

一个示例执行:

awk -f convert.awk author.list > output.html

确保 output.html 是有效的 html 文件。

【问题讨论】:

  • 到目前为止你尝试过什么?谁认为这是学习 AWK 的好练习?
  • @Cerberus,编辑你的问题。并根据您在 cmets 中收到的反馈进行操作。
  • 您说的是The table should render like this,但我们并不关心这一点,我们关心的是帮助您生成会导致表格呈现这样的 HTML。所以,edit 你的问题是显示你希望 awk 脚本输出的 HTML,因为这就是你(希望!)真正向我们寻求帮助的原因。
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。

标签: awk


【解决方案1】:

没有看到您想要生成的 HTML,这是一个猜测,但这可能是您想要的:

$ cat tst.awk
BEGIN {
    print "<html>"
    print "  <table>"
}
{
    for (i=1; i<=NF; i++) {
        $i = toupper(substr($i,1,1)) tolower(substr($i,2))
    }
    if ( (NR%3) == 1 ) {
        if (NR>1) print "      </tr>"
        print "      <tr>"
    }
    printf "        <td>%s</td>\n", $0
}
END {
    for (i=NR+1; (i%3) != 1; i++) {
        printf "        <td>%s</td>\n", ""
    }
    print "      </tr>"

    print "  </table>"
    print "</html>"
}

.

$ awk -f tst.awk author.list
<html>
  <table>
      <tr>
        <td>Kovacs Peter</td>
        <td>Kiss Roland</td>
        <td>Nagy Jolan</td>
      </tr>
      <tr>
        <td>Lisztes Tibor</td>
        <td>Feher Andras</td>
        <td>Korma Maria</td>
      </tr>
      <tr>
        <td>Akarki Jack</td>
        <td></td>
        <td></td>
      </tr>
  </table>
</html>

在名称开头不仅有 1 个大写字母的名称(如 McDonaldO'HaraBilly-Bob)上,名称大写/小写转换将失败。如果你必须处理,那么你需要提供一个算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2019-08-07
    • 2021-12-17
    • 2017-01-14
    相关资源
    最近更新 更多