LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1531|回复: 15

使用sed如何提取特定的一串字符呢?

[复制链接]
发表于 2004-7-14 14:52:44 | 显示全部楼层 |阅读模式
<param name="SRC" value="http://...">
怎样从上面一行提取"http://..."这部分呢?
 楼主| 发表于 2004-7-14 14:54:32 | 显示全部楼层
想要把<>除去,但是没有效果:
cat $charfile|sed 's/^<>$//'
 楼主| 发表于 2004-7-14 15:03:03 | 显示全部楼层
笨法子:
cat $charfile|sed  's/\(param name="SRC" value=\)//p'|tr -d '<'|tr -d '>'
得出:
"http://..."
发表于 2004-7-14 15:20:25 | 显示全部楼层
  1. echo $str|tr '"' '\n'|grep ^http
复制代码

example:
/home/lee#echo $str
<param name="SRC" value="http://www.linuxsir.cn">
/home/lee#echo $str|tr '"' '\n'|grep ^http
http://www.linuxsir.cn
 楼主| 发表于 2004-7-14 15:51:33 | 显示全部楼层
真奇怪,
上面的"http://..."保存在link_addr中
手动输入
wget "http://..." -O file_addr
可以得到file_addr;
但是wget `cat link_addr` -O file_addr就不行;
请问斑竹,
这是什么原因呢?
例子:
"http://202.108.34.200/interface/MediaStackInterface.jsp?key0=34e0ca02d022c78d7aa63c579ab5c7da&key1=cnRzcDovLzIwMi4xMDguMzQuMjAzL2J5Mi9ieTA0MDkvMzAway9SZ3F3bC5ybSMwNDA3MTQwMjMwMjYjIyAg"
发表于 2004-7-14 16:44:24 | 显示全部楼层
跟wget这个命令有关吧 :ask
 楼主| 发表于 2004-7-14 17:18:56 | 显示全部楼层
再向lee兄讨教一下:
(先行谢过!:thank)
刚发现,
我动手输入获得上述地址时,
终端显示的是
wget -O file_addr "http://..."
--17:06:45--  http://...“
可是当使用:
wget `cat link_addr` -o file_addr
--17:18:27--  ftp://%22http//.../
是不是这里的缘故?
:ask
发表于 2004-7-14 17:42:34 | 显示全部楼层
这样试试,
eval wget `<link_addr` -O file_addr
 楼主| 发表于 2004-7-14 17:58:36 | 显示全部楼层
终于行了,
但是很傻呀。

  1. #!/bin/sh
  2. # 这个脚本用来播放北京宽带网视频花园的在线电影
  3. # 方法可能很笨,但是我很有成就感 ^_^
  4. # 欢迎高手不吝赐教!
  5. echo "==================================================="
  6. echo "         你可以使用此脚本播放北京宽带网在线电影"
  7. echo "  方法:找到在线电影的介绍页面,将该页的的地址复制"
  8. echo "       粘贴到下面的输入位置,按回车即可"
  9. echo "  使用前提:"
  10. echo "       1,使用北京通信公司的adsl上网"
  11. echo "       2,系统里安装了MPlayer"
  12. echo "  播放效果一般,播放速率300k"
  13. echo "==================================================="
  14. echo
  15. echo "输入播放页面地址: "
  16. read page_addr
  17. echo
  18. wget $page_addr -O temp_file1
  19. grep "play_rate" ./temp_file1|grep "300k"|tr '"' '\n'|grep "play_rate=300k"|cut -d "(" -f2 |sed 's/\(..$\)//'|sed 's/\(^.\)//'>temp_file2;rm temp_file1
  20. link_addr1="http://media.bbn.com.cn`cat temp_file2`";rm temp_file2
  21. wget $link_addr1 -O link_addr2;unset link_addr1
  22. cat link_addr2|grep "SRC" > link_addr3;rm link_addr2                                                                           
  23. wget `cat link_addr3|tr '"' '\n'|grep ^http` -O link_addr4;rm link_addr3
  24. cat link_addr4|tr '"' '\n'|grep ^rtsp > real_addr;rm link_addr4
  25. mplayer -playlist real_addr;rm real_addr

复制代码


上面这个脚本用于在线播放北京宽带网视频花园的电影,
把在线播放电影页面的地址粘贴到过来,
可以使用mplayer播放。
lee兄有时间帮小弟检查一下,
我感觉我的方法可能太笨了,
足足用了十个临时文件,
太菜了。
 楼主| 发表于 2004-7-14 18:09:56 | 显示全部楼层
我试了试这个:
这样试试,
eval wget `<link_addr` -O file_addr

发现:
当link_addr里面的地址是"http://..."形式时,
用上面的命令可以得到file_addr;
但是当link_addr里面的地址是http://...形式时,
上面的命令会有错,
而需要使用:
wget `cat link_addr` -O file_addr;
我前面的错误就是两个混用造成的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表