【发布时间】:2020-09-03 10:07:06
【问题描述】:
我想在 AWK 中打印多行名称。目前,我可以打印 3 行和 3 列都放在 HTML 表中。我想要的是能够根据我的输入项的数量打印不确定的行数,而不必指定要打印的确切行数。
例如,我想在 3 列中打印以下名称,但行数取决于名称的数量。如果名称的数量是 33,那么我将有 3 列和 11 行。帮我做,在 AWK 中。 名称:
Kiss Roland
Nagy jolan
Lisztes Tibor
Feher aNDRas
Korma Maria
Akarki Jack
KOVACS PETER
Kiss Roland
Nagy jolan
Lisztes Tibor
Feher aNDRas
Korma Maria
Akarki Jack
KOVACS PETER
Kiss Roland
Nagy jolan
Lisztes Tibor
Feher aNDRas
Korma Maria
Akarki Jack
KOVACS PETER
Kiss Roland
Nagy jolan
Lisztes Tibor
Feher aNDRas
Korma Maria
Akarki Jack
到目前为止,我有这个 AWK 代码。它根据需要将名称大写并将它们打印在 3 列中。现在我需要行数与当前一样多,而不仅仅是 3 行。代码如下:
BEGIN{
FS=OFS=" ";
print "<html>" ORS "<title>" ORS "Hello World" ORS "</title>";
print "<head>" ORS "<style>" ORS "table, th, td {" ORS " border: 1px solid black;" ORS "}" ORS "</style>";
print "</style>" ORS "<body>" ORS "<table>";
}{
s=tolower($0);
split (s, letters, " ");
array[arraylen++] = toupper( substr( letters[1], 1, 1 ) ) substr( letters[1], 2 ) " " toupper( substr( letters[2], 1, 1 ) ) substr( letters[2], 2 );
up=toupper(substr(s,1,1));
small=tolower(substr(s,1,1));
as=sub(/small/, up, s);
}
END {
columns = 3;
print "<table>";
for (rows = 0; rows < columns; rows++) {
printf "<tr>";
for (cell = rows; cell <= rows + 2*columns; cell += columns) {
printf "<td>%s</td> ", array[cell];
}
print "</tr>";
}
print "</table>";
}
目前,它输出到这个只有 3 行和 3 列的 HTML 文件:我希望你明白我需要行很多,而不仅仅是 3。
<html>
<title>
Hello World
</title>
<head>
<style>
table, th, td {
border: 1px solid black;
}
</style>
</style>
<body>
<table>
<table>
<tr><td>Kovacs Peter</td> <td>Lisztes Tibor</td> <td>Akarki Jack</td> </tr>
<tr><td>Kiss Roland</td> <td>Feher Andras</td> <td>Kovacs Peter</td> </tr>
<tr><td>Nagy Jolan</td> <td>Korma Maria</td> <td>Kiss Roland</td> </tr>
</table>
【问题讨论】:
标签: html awk html-table