2010-12-21 61 views
0

例如過濾HTML文件, 當用grep內容的一部分,如果每一行是在這種模式:如何從一個字符串在bash

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

我怎麼能得到的href內容,我如何獲得<i></i>之間的文本?

+1

使用xmlstarlet http://stackoverflow.com/questions/1732348/regex-match-open-tags-except- xhtml-self-contained-tags/1732454#1732454 – 2010-12-21 05:15:18

+0

@Ignacio Vazquez-Abrams:xmlstarlet是否也支持HTML? – Gumbo 2010-12-21 05:32:27

+0

@Gumbo:你必須首先通過HTML Tidy推它,但這不是太大的交易。這更多的是不存在的選項,而不是底層的庫無法處理它。 – 2010-12-21 05:33:31

回答

1

cat file |切-f2 -d \」

FYI:幾乎所有其他HTML /正則表達式#2後解釋了爲什麼使用比HTML解析的任何其他是一個壞主意,從HTML獲取值,您可能想讀一些這些的。 。This one for example.

0

如果href是始終空間在分離的第二令牌,國家統計局則u可以嘗試

的grep的「href」文件|剪下-d''-f2 | cut -d'='-f2

0

下面介紹如何使用xmlstarlet(任選整潔)做它:

# 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