Например, при фильтрации html-файла, если каждая строка имеет такой тип шаблона:
<a href="xxxxxx" style="xxxx"><i>some text</i></a>
как я могу получить содержимое href, и как я могу получить текст между <i> и </i>?
href
<i>
</i>
cat file | cut -f2 -d \ "
К вашему сведению: практически все другие сообщения HTML / regexp в Stackoverflow объясняют, почему получение значений из HTML с использованием чего-либо, кроме анализа HTML, является плохой идеей. Вы можете прочитать некоторые из них. Например, этот.
Вот как это сделать с помощью 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
Если href всегда является вторым токеном, разделенным пробелом в a, то тогда вы можете попробовать
grep "href" file | cut -d '' -f2 | cut -d '=' -f2