替换特定HTML元素/标记内的所有字符实例

时间:2011-06-03 04:48:07

标签: html regex macos dreamweaver replace

Adob​​e Dreamweaver的Search&替换功能提供以将其范围限制为“仅在xxxx HTML标记内”。

我想在Mac OS X的命令行中执行此操作(因此将执行与其捆绑的任何操作)。

例如,如何使用命令行删除所有<h1>内的字符“a”的所有实例?

2 个答案:

答案 0 :(得分:1)

你可以使用unix的sed命令(也可以在mac上使用)。 e.g。

$ cat foo.xml 
<h1>axyzabca</h1>
<a href="foo.com">abc</a>
<h1>aa</h1>
<h1>a</h1>
<h1></h1>

$ cat foo.xml | sed 's/<h1>a*\([^a]*\)a*\([^a]*\)a*<\/h1>/<h1>\1\2<\/h1>/g' 
<h1>xyzbc</h1>
<a href="foo.com">abc</a>
<h1></h1>
<h1></h1>
<h1></h1>

(foo.xml是一个涵盖常见测试用例的示例输入)

答案 1 :(得分:0)

这不是一个单行,但是 -

perl -ni -e '
    $/ = undef; $x = <>; $y = "";
    while ($x =~ m#^(.*?<h1>)(.*?)(</h1>)(.*)$#si) {
      $x = $4; $y .= $1; $c = $3;
      ($b = $2) =~ s/a/(something else)/g;
      $y .= $b . $c;
    } print $y . $x;
' filename.html