как извлечь часть содержимого из строки в bash - PullRequest
0 голосов
/ 21 декабря 2010

Например, при фильтрации html-файла, если каждая строка имеет такой тип шаблона:

<a href="xxxxxx" style="xxxx"><i>some text</i></a>

как я могу получить содержимое href, и как я могу получить текст между <i> и </i>?

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

cat file | cut -f2 -d \ "

К вашему сведению: практически все другие сообщения HTML / regexp в Stackoverflow объясняют, почему получение значений из HTML с использованием чего-либо, кроме анализа HTML, является плохой идеей. Вы можете прочитать некоторые из них. Например, этот.

0 голосов
/ 12 марта 2011

Вот как это сделать с помощью xmlstarlet (опционально с tidy):

# extract content of href and <i>...</i>
echo '<a href="xxxxxx" style="xxxx"><i>some text</i></a>' |
xmlstarlet sel -T -t -m "//a" -v @href -n -v i -n

# using tidy & xmlstarlet
echo '<a href="xxxxxx" style="xxxx"><i>some text</i></a>' |
tidy -q -c -wrap 0 -numeric -asxml -utf8 --merge-divs yes --merge-spans yes 2>/dev/null | 
xmlstarlet sel -N x="http://www.w3.org/1999/xhtml" -T -t -m "//x:a" -v @href -n -v . -n
0 голосов
/ 21 декабря 2010

Если href всегда является вторым токеном, разделенным пробелом в a, то тогда вы можете попробовать

grep "href" file | cut -d '' -f2 | cut -d '=' -f2

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