2011-10-17 14 views
0

我有一个网站,需要做一些群发性的编辑,我用sed来执行大部分任务,但添加标题标签(<h1>,<h2>)非常复杂,我想不出一种方式来应付:sed:如何编辑一行代码后需要保留一些内容?

,我可以保证的模式如下:

<td class="content_subhd">Heading Name</td> 

我想将它更改为:

<td class="content_subhd"><h2>Heading Name</h2></td> 

走向何方名称也不是一成不变的,它的每一页,这在不同的是我能用的原因用它代替到期。

有什么建议吗?

回答

0

2招数抓住一切:

  1. 使用图案分组\(... \)和重返\1

  2. 使用冒号作为分隔符的图案,而不是/避免过度引用

结果:

sed 's:\(<td class="content_subhd">\)\(.*\)\(</td>\):\1<h2>\2</h2>\3:' 
+0

这项工作!非常感谢! – felix

0

这是怎么回事?

sed 's/\([^>]*>\)\(.*\)\(<.*\)/\1<h1>\2<\/h1>\3/' 
     1   2  3 
  1. 抓住一切直到并包括第一>
  2. 惹人Heading Name和其他可能的内容
  3. 后需要一个
1
echo '<td class="content_subhd">Heading Name</td>' | \ 
sed -r 's;(<td\s*class\s*=\s*"content_subhd"\s*>)([^<]+)(</td>);\1<h2>\2</h2>\3;'