Sed:如何编辑替换后需要保留某些内容的行?

Sed:如何编辑替换后需要保留某些内容的行?,sed,Sed,我有一个网站需要进行一些大规模编辑,我使用sed来执行大部分任务,但添加标题标签(,)非常棘手,我想不出一个方法来完成: 我可以保证的模式如下: <td class="content_subhd">Heading Name</td> 标题名 我想将其更改为: <td class="content_subhd"><h2>Heading Name</h2></td> 标题名 如果标题名称不是静态的,那么每个页面上的标题名

我有一个网站需要进行一些大规模编辑,我使用sed来执行大部分任务,但添加标题标签(
)非常棘手,我想不出一个方法来完成:

我可以保证的模式如下:

<td class="content_subhd">Heading Name</td>
标题名
我想将其更改为:

<td class="content_subhd"><h2>Heading Name</h2></td>
标题名
如果标题名称不是静态的,那么每个页面上的标题名称都是不同的,这就是为什么我可以使用substitute to due

有什么建议吗?

这个怎么样

sed 's/\([^>]*>\)\(.*\)\(<.*\)/\1<h1>\2<\/h1>\3/'
         1         2     3
sed's/\([^>]*>\)\(.*\)\(
echo'Heading Name')\
sed-r的;()([^2个技巧需要:

  • 使用模式分组
    \(…\)
    并重新插入
    \1

  • 使用冒号作为模式分隔符,而不是
    /
    ,以避免过度引用

  • 结果:

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