我的文本文件中有以下数据:
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 表:
详情
您可以像这样使用
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>
)
此代码在直接触发时有效,但 cronjob 则不起作用
错误:awk 命令无法读取 input.txt 文件。请推荐。