Не видя 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 заглавную букву в начале имени. Если вам нужно справиться с этим, вам нужно предоставить алгоритм.