我想改变
Example 1
<pre class="code">
bla bla
</pre>
Example 2
<pre>
bla bla
</pre>
到只是
Example 1
Example 2
所以我需要非贪婪匹配和正则表达式。 我很确定我不能使用sed
- 我可以使用哪些 shell 命令?
所以我
需要非贪婪匹配一个正则表达式。
没有。假设<pre>
和</pre>
标签始终单独在一行上,没有注释或其他 HTML 标签,并且您无需担心无法转义的 HTML 实体,您可以使用例如
perl -ne 'print unless m{^s*<preb} .. m{^s*</pre>}'
但是使用真正的HTML解析器可能是一个更好的主意:
perl -MHTML::Parser -e 'HTML::Parser->new(ignore_elements => ["pre"], default_h => [sub { print @_ }, "text"])->parse_file(*STDIN)' < input.html
(详细信息取决于您希望对文档的其余部分执行哪些操作。