我正在处理一些HTML代码而且我遇到了一些问题。这是一些代码的摘录,格式完全相同
<tr>
<td nowrap valign="top" class="table_1row"><a name="d071301" id="d071301"></a>13-Jul-2011</td>
<td width="21%" valign="top" class="table_1row"><a href="http://www.info.htm" target="_blank">LCQ8: Personal data of job</a></td>
这里我必须与
相匹配 <tr>
<td nowrap valign="top"
并在<tr>
之前插入一些内容。出现问题,因为我必须匹配不同行中的模式。
我试过了
grep -c "<tr>\n<td nowrap valign="top"" test.html
grep -c "<tr>\n*<td nowrap valign="top"" test.html
grep -c "<tr>*<td nowrap valign="top"" test.html
测试,但没有一个工作。所以我有两个维度来找出问题:
- 匹配
<td nowrap valign="top" and insert in the line above
- 匹配整个字符串
醇>
<tr>
<td nowrap valign="top"
有人会建议采用两种方式吗?
答案 0 :(得分:2)
使用sed可以在多行上进行替换。它也很容易替代比赛。
sed "/\s*<tr>\s*/ { N; s/.*<tr>\n\s*<td.*/insertion\n&/ }"
这条神秘的线条基本上说:
/\s*<tr>\s*/
)N
)s/.*<tr>\n\s*td.*/insertion\n&/
)Sed执行替换非常强大,它是一个很好的工具。如果您想了解有关sed的更多信息,请参阅本手册: http://www.grymoire.com/Unix/Sed.html
答案 1 :(得分:0)
grep -P "tr>\s*\n\s*<td"
。<tr>
之前插入内容,但无论如何。