首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML中的文本过滤器和打印解析过滤器

HTML中的文本过滤器和打印解析过滤器
EN

Stack Overflow用户
提问于 2011-11-05 05:18:48
回答 2查看 125关注 0票数 0

我有一个OPML文件,我想要解析链接和名称,以便创建一个HTML格式的列表。

代码语言:javascript
复制
<outline text="Wired Features" type="rss" xmlUrl="http://downloads.wired.com/podcasts/xml/features.xml?_kip_ipx=1854665749-1310493405" htmlUrl="http://www.wired.com" />
<outline text="ArcSight Podcasts" type="rss" xmlUrl="http://www.arcsight.com/podcasts/itunes/" htmlUrl="http://www.arcsight.com" />

使用SED或类似的东西,我希望打印相应的HTML输出中的项目,即

代码语言:javascript
复制
<a href="http://downloads.wired.com/podcasts/xml/features.xml?_kip_ipx=1854665749-1310493405" title="http://www.wired.com">Wired Features</a>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-05 05:34:10

代码语言:javascript
复制
perl -nle'
  ($text)  = /text="(.*?)"/   ;
  ($url)   = /xmlUrl=(".*?")/ ;
  ($title) = /htmlUrl=(".*?")/;
  /./ and printf "<a href=%s title=%s>%s</a>\n",
     $url, $title, $text; 
  ' infile

假设在感兴趣的部分中没有嵌入换行符。

使用XMLgawk

代码语言:javascript
复制
xgawk -lxml 'XMLSTARTELEM  {
  printf "<a href=%s title=>%s>%s</a>\n",
    q XMLATTR["xmlUrl"] q, q XMLATTR["htmlUrl"] q, XMLATTR["text"]
  }' q=\" infile

编辑: Perl解决方案可以用一个正则表达式重写:

代码语言:javascript
复制
perl -nle'
  /text="(.*?)".*xmlUrl=(".*?").*htmlUrl=(".*?")/
    and printf "<a href=%s title=%s>%s</a>\n",
     $2, $3, $1; 
  ' infile 
票数 2
EN

Stack Overflow用户

发布于 2011-11-05 06:57:43

这个sed解决方案可能会起作用:

代码语言:javascript
复制
sed 's/^<outline text="\([^"]*\)" type="rss" xmlUrl=\("[^"]*"\) htmlUrl=\("[^"]*"\) \/>/<a href=\2 title=\3>\1<\/a>/' input_file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8015858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档