我正在尝试执行以下操作:
我有一个包含HTML标签的文件,例如"<span class='A'> blah </span>"
,"<span class='B'> blah </span>"
等。
我想用** blah **
替换"<span class='A'> blah </span>"
的所有事件。所以我尝试使用sed。
sed "s/<span class='A'>/*/g" myfile
,其次是
sed "s/<span>/*/g" myfile
这几乎让我想要的东西,但我不想要的其他类别的最终跨度标签。
理想情况下,我希望某种方式参考
中的[^&lt;]*匹配的文本 sed s/<span class='A'>[^<]*</span>/my_replacement_character/g
。
您可以使用捕获组和反向注册。在大多数正则口味中,您可以指定带有括号的捕获组,在SED中,您需要逃脱括号,因此您将[^<]*
更改为([^<]*)
。然后,在您的替换中,您可以使用1
参考被捕获的任何内容。
最后,它应该看起来像这样:
sed "s/<span class='A'>([^<]*)</span>/**1**/g"
在某些GNU SED(可能是其他实现)中,您可以使用-r
或--regexp-extended
标志使SED Regex与其他口味更加一致。这样,您就无需逃脱括号:
sed -r "s/<span class='A'>([^<]*)</span>/**1**/g"