对于模糊的标题和标签感到抱歉,因为这个问题非常具体。
我不是一个大型的脚本编写者或编码器。我运行一个网站,需要每周更新几次某些结果。结果由特殊软件创建,并以这些格式之一导出; html,pdf,doc,xls,rpt,ttx,csv,odbc,rec,rtf或xml。
由于我的网站使用的表格布局与导出的文件不同,因此我目前在my和tags之间复制并粘贴信息。我只花了几分钟,但我想知道如何自动化这个?导出的文件如下所示:
1 John and George 12
2 Peter and Suzan 10
3 Allan and Ed 8
并且需要在这方面做一些事情:
<table width="100%" cellspacing="0" class="tabels" id="top">
<tr>
<td colspan="3" class="tabel"><b> Groupp A</b></td>
</tr>
<tr>
<td class="tabel"><strong> 1. </strong></td>
<td class="tabel">John and George</td>
<td class="tabel">12</td>
</tr>
<tr>
<td class="tabel"><strong>2.</strong></td>
<td class="tabel">Peter and Suzan</td>
<td class="tabel">10</td>
</tr>
<tr>
<td class="tabel"><strong> 3. </strong></td>
<td class="tabel">Allan and Ed</td>
<td class="tabel">8</td>
</tr>
这可能是非常基本的。我想一些查找和替换命令应该可以解决问题。我尝试过使用Notepad ++,但我想知道你们会怎样处理这个问题?我可以使用linux或windows机器。
答案 0 :(得分:0)
我会将awk
用于这样的事情(尽管任何测试处理工具,如Perl,都可以完成任务)。
首先是输入文件:
pax> cat testprog.in
1 John and George 12
2 Peter and Suzan 10
3 Allan and Ed 8
然后,awk
脚本本身:
pax> cat testprog.awk
BEGIN {
print "<table width=\"100%\" cellspacing=\"0\" class=\"tabels\" id=\"top\">"
print " <tr>"
print " <td colspan=\"3\" class=\"tabel\"><b> Groupp A</b></td>"
print " </tr>"
}
{
print " <tr>"
print " <td class=\"tabel\"><strong>" $1 ".</strong></td>"
str = ""; for (i = 2; i < NF; i++) str = str " " $i
print " <td class=\"tabel\">" substr (str,2) "</td>"
print " <td class=\"tabel\">" $NF "</td>"
print " </tr>"
}
END {
print "</table>"
}
然后,运行一个示例,以便您可以看到它正常工作:
pax> awk -f testprog.awk testprog.in
<table width="100%" cellspacing="0" class="tabels" id="top">
<tr>
<td colspan="3" class="tabel"><b> Groupp A</b></td>
</tr>
<tr>
<td class="tabel"><strong>1.</strong></td>
<td class="tabel">John and George</td>
<td class="tabel">12</td>
</tr>
<tr>
<td class="tabel"><strong>2.</strong></td>
<td class="tabel">Peter and Suzan</td>
<td class="tabel">10</td>
</tr>
<tr>
<td class="tabel"><strong>3.</strong></td>
<td class="tabel">Allan and Ed</td>
<td class="tabel">8</td>
</tr>
</table>
关于它是如何工作的,这将在下面解释。
BEGIN
和END
子句只是控制在处理输入文件中的行之前和之后打印的内容。这就是表格本身和第一行。
对于每一行,您首先打印出tr
标记和包含该行第一个单词的td
标记。
然后根据中间参数构造另一条td
行,折叠过程中的空格。
最后一个td
,最后一个参数在线上,一个结束tr
,你有它。转到下一行。
答案 1 :(得分:0)
这是一个Linux sed
解决方案:
sed 's|\([0-9]*\) *\(.*[^ ]\) *\([0-9]*\)$|<tr><td class="tabel"><strong>\1.</strong></td><td class="tabel">\2</td><td class="tabel">\3</td></tr>|' filename > filename.html
这只是处理表格行。其他所有内容看起来都像是静态样板文件,您应该能够在脚本中使用echo
命令生成。