2010-12-21 52 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