2010-08-27 58 views
2

我希望在已知的HTML标记之间提取数据。例如:使用sed提取HTML标记数据

Hello, <i>I<i> am <i>very</i> glad to meet you.

应该改为:

'我

很'

所以我发现一些作品以做到这一点。不幸的是,它只提取最后一个条目。

sed -n -e 's/.*<i>\(.*\)<\/i>.*/\1/p'

现在我可以追加任何结束标记</i>以换行符,这工作得很好。但是有没有办法只用一个sed命令呢?

回答

0
$ awk -vFS="<.[^>]*>" '{for(i=2;i<=NF;i+=2)print $i}' file 
I 
very 
3

这给一试:

sed -n 's|[^<]*<i>\([^<]*\)</i>[^<]*|\1\n|gp' 

而且你的例子是缺少一个 “/”:

Hello, <i>I</i> am <i>very</i> glad to meet you. 
2

试试这个:

$ sed 's/<[^>]*>//g' file.html