简体   繁体   English

使用sed提取HTML标记数据

[英]Extract HTML tag data with sed

I wish to extract data between known HTML tags. 我希望在已知的HTML标记之间提取数据。 For example: 例如:

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

Should become: 应该成为:

'I

very'

So I have found something that works to nearly do this. 所以我发现一些作品做到这一点。 Unfortunately, it only extracts the last entry. 不幸的是,它只提取最后一个条目。

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

Now I can append any end tag </i> with a newline character and this works fine. 现在我可以使用换行符添加任何结束标记</i> ,这样可以正常工作。 But is there a way to do it with just one sed command? 但有没有办法只用一个sed命令来做到这一点?

Give this a try: 尝试一下:

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

And your example is missing a "/": 你的例子缺少一个“/”:

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

试试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM