Удалите <pre>...</pre> блоков с помощью команд оболочки - PullRequest
0 голосов
/ 03 июня 2018

Я бы хотел изменить

<code>Example 1 
<pre class="code">
bla bla 
Пример 2
bla bla 

на

Example 1 
Example 2 

Так что мне нужно не жадное сопоставление и регулярное выражение,Я почти уверен, что не могу использовать sed - какие команды оболочки я могу использовать?

1 Ответ

0 голосов
/ 03 июня 2018

Так что мне нужно не жадное сопоставление с регулярным выражением.

Не совсем.Предполагая, что теги <pre> и </pre> всегда находятся на одной строке, нет комментариев или других тегов HTML, и вам не нужно беспокоиться об удалении сущностей HTML, вы можете использовать, например,

<code>perl -ne 'print unless m{^\s*<pre\b} .. m{^\s*
} '

Но лучше использовать настоящий анализатор HTML:

perl -MHTML::Parser -e 'HTML::Parser->new(ignore_elements => ["pre"], default_h => [sub { print @_ }, "text"])->parse_file(*STDIN)' < input.html

(детали зависят от того, что именно вы хотите сделать с остальной частью документа.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...