免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1663 | 回复: 7
打印 上一主题 下一主题

怎样才能只输出匹配的部份,而不是匹配的行? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-26 13:55 |只看该作者 |倒序浏览
怎样才能只输出匹配的部份,而不是匹配的行?

比如一个文件里有
<tr><td><a href="字串1">字串2</a></td></tr>

怎样做才能只输出字串1和字串2,而不是整行都输出呢?

论坛徽章:
0
2 [报告]
发表于 2004-04-26 14:40 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

我的代码,不过有点烦:
$ cat aa
<tr><td><a href="字串1">字串2</a></td></tr>

#!/bin/sh
awk -F\" '{print $2}' aa
sed 's/<[^>]*>//g' aa

论坛徽章:
0
3 [报告]
发表于 2004-04-26 15:01 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

[quote]原帖由 "yjchlove"][/quote 发表:

再请教,如果要解析出一篇html里的超链接shell应该怎么写呢? php写很容易,sed及awk要怎么写呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-26 16:18 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

  1. cat yourhtmlfile|sed -n 's#.*\(http://[[:alnum:]?=_./]\{5,\}\).*#\1#p'
复制代码

下面连接是用上面的代码从“http://fm974.tom.com/”网站主页解析的部分连接:
  1. http://image.cn.tom.com/guanggao/nav/nav_bg.gif
  2. http://image.cn.tom.com/guanggao/nav/nav_pic.gif
  3. http://www.tom.com
  4. http://avatar.tom.com/
  5. http://fm974.tom.com
  6. http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab
  7. http://ad.tom.com/jl/moto/v878/moto
  8. http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=Shockwave
  9. Flash
  10. http://www.tom.com
  11. http://app.tom.com/music/listen.php?songid=437
  12. http://ent.tom.com/pop/
  13. http://app.tom.com/music/listen.php?songid=437
  14. http://www.rcn974.com/
  15. http://image.cn.tom.com/guanggao/mail/movie1.js
  16. http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab
  17. http://fm974.tom.com/images/ad/zhongtoupiao_ad.swf
  18. http://fm974.tom.com/images/ad/zhongtoupiao_ad.swf
  19. http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=Shockwave
  20. Flash
  21. http://ent.tom.com/1306/1362/2004426
  22. http://fm974.tom.com/images/jiangyuwei/ren1.jpg
  23. http://fm974.tom.com/images/jiangyuwei/ren2.jpg
复制代码

论坛徽章:
0
5 [报告]
发表于 2004-04-26 16:34 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

[quote]原帖由 "admirer"][/quote 发表:

高,^_^

那怎么把链接的名称一并解析出来呢?以"http://fm974.tom.com"这个网页为例
比如:
...<td width="567" style="line-height:24px;padding-top:6px" align=center>
<a href=http://tom.com/ class=00><font color=red>首页</font></a>?<a href=http://news.tom.com/ class=00>新闻</a>?<a href=http://sports.tom.com/ class=00>体育</a>?<a href=http://auto.tom.com/ class=00>汽车</a>?<a href=http://ent.tom.com/ class=00>娱乐</a>?<a href=http://fm974.tom.com/ class=00>音乐</a>?<a href=http://tech.tom.com/ class=00>科技</a>?<a href=http://games.tom.com/ class=00>游戏</a>?<a href=http://lady.tom.com/ class=00>女性</a>?<a href=http://finance.tom.com/ class=00>财经</a>?<a href=http://house.tom.com/ class=00>房产</a>?<a href=http://edu.tom.com/ class=00>教育</a>?<a href=http://astro.tom.com/ class=00>星座</a>?<a href=http://army.tom.com/ class=00>军事</a>?<a href onclick=this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.tom.com');return false; style=cursor:hand class=00>设首页</a><br>...

解析后输出为:
http://tom.com/ 首页
.
.
.
http://ent.tom.com/ 娱乐
.
.
.
http://army.tom.com/ 军事

这种形式呢?

还有你的shell不光解析出超链接url,连图象url也解析出来,这可不是我想得到的啊 ^_^

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-04-26 17:24 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

考试啦?
  1. sed 's/<a/\n&/g' file | sed -n 's#.*\(http://[[:alnum:]./]\{5,\}\).*>\([^ <]\{2,20\}\)<.*#\1 \2#p'

  2. http://tom.com/ 首页
  3. http://news.tom.com/ 新闻
  4. http://sports.tom.com/ 体育
  5. http://auto.tom.com/ 汽车
  6. http://ent.tom.com/ 娱乐
  7. http://fm974.tom.com/ 音乐
  8. http://tech.tom.com/ 科技
  9. http://games.tom.com/ 游戏
  10. http://lady.tom.com/ 女性
  11. http://finance.tom.com/ 财经
  12. http://house.tom.com/ 房产
  13. http://edu.tom.com/ 教育
  14. http://astro.tom.com/ 星座
  15. http://army.tom.com/ 军事
  16. http://www.tom.com 设首页
复制代码

论坛徽章:
0
7 [报告]
发表于 2004-04-26 21:18 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

[quote]原帖由 "admirer"][/quote 发表:


我试了下怎么只输出最后一个啊,别的不输出?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-04-26 21:42 |只看该作者

怎样才能只输出匹配的部份,而不是匹配的行?

看好我的环境!
sed是gnu4.0.9
如果需要可以到我得网络硬盘下载(for sco unix版的),也可以直接到gnu网站下载
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP