2011-10-17 16 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;'