Команда sed для извлечения текста из HTML - PullRequest
1 голос
/ 16 декабря 2010

Я беру источник страницы с помощью curl и хочу извлечь текст из определенного тега.

текст находится между уникальным тегом:

href="http://www.website.com/some/unique/page.php?q=xyz">TEXT</a>

Что яdid было:

curl -s "http://www.website.com" | sed 's|PATTERN|\1|'

Где PATTERN - это один из многих шаблонов регулярных выражений, которые я пробовал, один из которых:

href="http://www.website.com/some/unique/page.php?q=xyz">\(.*\)</a>

Но по некоторым причинам я не смог получить егоРабота.Я либо получаю полный исходный код страницы, либо ничего вообще (в зависимости от используемого шаблона).

Буду признателен за любую помощь.

1 Ответ

2 голосов
/ 16 декабря 2010

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

sed 's/^.*>\([^<]*\)<.*$/\1/'

Если вы хотите получить only , равный TEXT, и вы хотите, чтобы он выводился только с URL-адреса, содержащего в своем пути слово unique, используйте вместо этого:

sed -n '/http:.*\/unique\//s/^.*>\([^<]*\)<.*$/\1/p'
...