Извлечение данных HTML-тега с помощью sed - PullRequest
2 голосов
/ 28 августа 2010

Я хочу извлечь данные между известными тегами HTML. Например:

Hello, <i>I<i> am <i>very</i> glad to meet you.

Должно стать:

'I

very'

Итак, я нашел что-то, что почти делает это. К сожалению, он извлекает только последнюю запись.

sed -n -e 's/.*<i>\(.*\)<\/i>.*/\1/p'

Теперь я могу добавить любой конечный тег </i> с символом новой строки, и это прекрасно работает. Но есть ли способ сделать это с помощью одной команды sed?

Ответы [ 3 ]

3 голосов
/ 28 августа 2010

Попробуйте:

sed -n 's|[^<]*<i>\([^<]*\)</i>[^<]*|\1\n|gp'

И в вашем примере отсутствует "/":

Hello, <i>I</i> am <i>very</i> glad to meet you.
2 голосов
/ 08 октября 2011

Попробуйте это:

$ sed 's/<[^>]*>//g' file.html
0 голосов
/ 28 августа 2010
$ awk -vFS="<.[^>]*>" '{for(i=2;i<=NF;i+=2)print $i}' file
I
very
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...