Как заменить HTML-теги с SED? - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужна помощь с использованием sed в Unix.Мне нужно использовать стандартную Unix-команду sed для обработки входного потока и удаления всех тегов HTML, так что, например:

This is <a href="foo.html">my link</a>.

будет заменено на

This is my link.

Я пытался

sed -r 's/
<[^>]*>
//g'

но это не сработало.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Это крайне скудно и вряд ли уловит все сценарии, которые HTML бросит в вас, но если вы хотите просто урезать ведущий и конечный <и>, то что-то вроде этого может работать:

sed 's/<[^>]*>//g' 

А если серьезно, я бы использовал парсер.

0 голосов
/ 27 декабря 2018

В общем случае вы не можете проанализировать HTML с помощью регулярных выражений.

Но для простого случая и при условии, что ни один тег не занимает более двух строк, вы можете использовать:

sed -e 's/<[^<>]*>//g' -e 's/<[^<>]*$//' -e 's/^[^<>]*>//'

Первое регулярное выражение находит и удаляет теги, содержащиеся в одной строке.Вторая заботится о тегах, которые начинаются на строке, но заканчиваются на следующей.Третий удаляет хвосты тегов, которые начались в предыдущей строке.Если тег может занимать более двух строк, тогда требуется нечто более сложное (или более совершенный инструмент).

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