Как читать из файла и выводить на html таблицу с помощью AWK - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в AWK и знаю, что это не конкретный c вопрос. Мне просто нужен совет, как мне это сделать.

Учитывая следующие имена в файле, 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 файлом.

1 Ответ

0 голосов
/ 03 апреля 2020

Не видя 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>

Имя преобразования верхнего / нижнего регистра произойдет сбой в именах, таких как McDonald или O'Hara или Billy-Bob, которые не имеют только 1 заглавную букву в начале имени. Если вам нужно справиться с этим, вам нужно предоставить алгоритм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...