请参阅SED中的Regex中的匹配字符串



我正在尝试执行以下操作:

我有一个包含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"

相关内容

  • 没有找到相关文章

最新更新