我在文本文件中有以下数据:
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表中转换成:
详情
答案 0 :(得分:3)
您可以像这样使用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>
的最大数量时重新初始化(此处为2 <td>
每<tr>
)