使用 shell 命令删除 <pre>...</pre> 块



我想改变

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

(详细信息取决于您希望对文档的其余部分执行哪些操作。

最新更新