在unix上使用AWK / SED命令创建HTML表

时间:2014-07-28 14:22:03

标签: shell unix awk sed

我有一个看起来像这样的文件。有什么办法可以将文件格式化为我想要的样子吗? (见下文)我使用了sed / awk的各种版本,但它似乎不起作用。这样做的目的是让我可以在我的文件上获得很好的表格,所以当我在unix上使用mail命令发送它时,它会通过阅读html文本打印出一个表格。非常感谢您提供有关如何执行此操作的任何指示或直接帮助!

File
    Candy Max Capacity
    Skittle 2293 1.72
    M&m 3420 2.57
    choco 294 .22
    sugar  246 .18
    Salt Max Capacity
    one 2293 1.72
    two 3420 2.57
    three 294 .22
    four   246 .18
    Candy Max Capacity
    Skittle 2293 1.72
    M&m 3420 2.57
    choco 294 .22
    sugar  246 .18
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 
    TONS OF WORDS AND INFO HERE. TONS OF WORDS AND INFO HERE. 

我希望它看起来如何的示例。

MIME-Version: 1.0
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<table border="1" style="width:300px">
<tr>
<td>Candy</td><td>Update</td><td>Capacityt</td>
</tr>
<tr>
<td>SKittle</td><td>2293</td><td>1.72</td>
</tr>
<tr>
<td>M&M</td><td>3420</td><td>2.57</td>
</tr>
<tr>
<td>Choco</td><td></td> 294<td>.22</td>
</tr>
<tr>
<td>Sugar</td><td></td> 246<td>.18</td>
</tr>
</table>
</html>

2 个答案:

答案 0 :(得分:0)

正如其他人所提到的,你应该真正包括你以前的尝试以及它们的问题。无论如何,这是我尝试解决方案:

awk '{print "<tr>\n<td>"$1"</td><td>"$2"</td><td>"$3"</td>\n</tr"}' INPUT.FILE

由于awk解释<>和位置变量的方式,引号非常重要。您必须手动添加HTML页眉和页脚部分,但这应该是中间部分。我确信它可以写得更简洁,我会继续努力寻找更好的解决方案。

注意:此脚本将解析整个文件。除了解析前19行之外,我无法根据您的原始问题辨别起点或终点。如果是这种情况,请告诉我,我可以为awk脚本添加边界。

答案 1 :(得分:0)

echo ${header}
cat file | while read col1 col2 col2; do
   echo "   <tr>
      <td>${col1}</td><td>${col2}</td><td>${col3}</td>
   </tr>"
done
echo "</table>"