免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2449 | 回复: 12

shell 问题 [复制链接]

论坛徽章:
0
发表于 2010-08-05 13:03 |显示全部楼层
本帖最后由 liang3391 于 2010-08-05 13:04 编辑

<embed menu="true" type="application/x-shockwave-flash"
src="http://static.youku.com/v1.0.0025/v/swf/qplayer.swf?VideoIDS=XMTgyODM2MzI4&amp;winType=interior&amp;isShowRelatedVideo=false&amp;showAd=0"
width="470" height="350" play="true" loop="True"></embed>

要替换为下面的:
<embed id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTgyODM2MzI4/v.swf" quality="high" width="470" height="350" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

代码里<embed></embed> 这个标识是唯一的,替换了 我怎么取之前的width= height=  VideoIDS= 等数值 到替换后的代码里呢?
我用颜色标注了。
同颜色是替换取值要相同,shell怎么写

论坛徽章:
0
发表于 2010-08-05 13:11 |显示全部楼层
本帖最后由 ywlscpl 于 2010-08-05 13:17 编辑

v1='<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/'
v2='/v.swf" quality="high" '
v3=' align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>'

sed "s#.*VideoIDS=\([^&]*\)&.*\(width=.*height=.*\)play.*#$v1\1$v2\2$v3#" file

论坛徽章:
0
发表于 2010-08-05 13:32 |显示全部楼层
本帖最后由 liang3391 于 2010-08-05 13:40 编辑

还有个问题,
格式1
<embed type="application/x-shockwave-flash" height="400" width="500"
src=" http://static.youku.com/v1.0.0115/v/swf/qplayer.swf?VideoIDS=XMTY3MzIwMTY=&isAutoPlay=true&embedid=-&showAd=0"
pluginspage=" http://www.macromedia.com/go/getflashplayer" wmode="transparent"
document.document.form1.="hight"></embed>
要替换这样
<embed id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTY3MzIwMTY/v.swf" quality="high" width="500" height="400" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

格式2
<embed menu="true" type="application/x-shockwave-flash"
src="http://static.youku.com/v1.0.0025/v/swf/qplayer.swf?VideoIDS=XMTgyODM2MzI4&amp;winType=interior&amp;isShowRelatedVideo=false&amp;showAd=0"
width="470" height="350" play="true" loop="True"></embed>
替换成这样
<embed id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTgyODM2MzI4/v.swf" quality="high" width="470" height="350" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

格式3
<embed pluginspage="http://www.macromedia.com/go/getflashplayer"
src="http://static.youku.com/v1.0.0115/v/swf/qplayer.swf?VideoIDS=XMTQ4OTU4NDg=&isAutoPlay=true&embedid=-&showAd=0"" width="500" height="400"
type="application/x-shockwave-flash" wmode="transparent" document.document.form1.="hight"></embed>
替换成这样
<embed id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTQ4OTU4NDg/v.swf" quality="high" width="500" height="400" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

这里有个标示就是 <embed></embed> 这个标识在代码里是唯一的。我不考虑代码内容,只考虑标示,把标识内的替换然后再取值。 这个可以吗?想不到思路.
因为文件比较多还要考虑效率问题。

论坛徽章:
0
发表于 2010-08-05 13:35 |显示全部楼层
回复 3# liang3391


看不清的,你像1楼一样标一下颜色吧

论坛徽章:
0
发表于 2010-08-05 13:41 |显示全部楼层
本帖最后由 liang3391 于 2010-08-05 13:50 编辑

已标注颜色。想用一个脚本搞定,根据唯一标示的位置来实现替换,并根据标注的颜色来取值。替换后保持代码里原来的 width=   height=   VideoIDS= 等三个数值不变。VideoIDS= 这个数值取到 http://player.youku.com/player.php/sid/ 取到这里

论坛徽章:
0
发表于 2010-08-05 14:11 |显示全部楼层
没看懂,不简单,是体力活,针对每种情况都要写正则的
写了两个,点到为止
[root@Mylinux tmp]# cat file
<embed type="application/x-shockwave-flash" height="400" width="500" src=" http://static.youku.com/v1.0.011 ... edid=-&showAd=0" pluginspage=" http://www.macromedia.com/go/getflashplayer" wmode="transparent" document.document.form1.="hight"></embed>

<embed menu="true" type="application/x-shockwave-flash" src="http://static.youku.com/v1.0.0025/v/swf/qplayer.swf?VideoIDS=XMTgyODM2MzI4&amp;winType=interior&amp;isShowRelatedVideo=false&amp;showAd=0" width="470" height="350" play="true" loop="True"></embed>

[root@Mylinux tmp]# cat o1
v1='<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/'
v2='/v.swf" quality="high" '
v3=' align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>'

w1='<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/'
w2='/v.swf" quality="high" '
w3=' align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>'
[root@Mylinux tmp]# source o1
[root@Mylinux tmp]#
[root@Mylinux tmp]# sed "/^<embed type=/s#.* \(height=.*width=.*\) src=.*VideoIDS=\([^=]*\)=.*#$v1\2$v2\1$v3#;/^<embed menu=/s#.*VideoIDS=\([^&]*\)&.*\(width=.*height=.*\) play.*#$w1\1$w2\2$w3#" file           
<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/XMTY3MzIwMTY/v.swf" quality="high" height="400" width="500" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/XMTgyODM2MzI4/v.swf" quality="high" width="470" height="350" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

[root@Mylinux tmp]#

论坛徽章:
0
发表于 2010-08-05 14:23 |显示全部楼层
我是想考虑根据 <embed></embed> 这个标识在代码里是唯一的来定位替换呢,上面那些格式的代码都是被这个标识括起来的。<embed></embed> 这个标识中间的内容当初*来读取直接替换掉。再取值。

论坛徽章:
0
发表于 2010-08-05 14:23 |显示全部楼层
额,原来target是一样的,我只知道复制、粘贴
那o1里面保留一组变量就行了

论坛徽章:
0
发表于 2010-08-05 15:35 |显示全部楼层
可以了
[root@Mylinux tmp]# cat o1
v1='<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/'
v2='/v.swf" quality="high" '
v3=' align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>'
[root@Mylinux tmp]# source o1
[root@Mylinux tmp]# sed "/^<embed/{s#\(.*\)\(height=[^ ]*\)\( .*\)#\2 \1\3#;s#\(.*\)\(width=[^ ]*\)\( .*\)#\2 \1\3#;s#\(width=.*height=[^ ]*\) .*VideoIDS=\([^=&]*\)[=&].*#$v1\2$v2\1$v3#}" file  
<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/XMTY3MzIwMTY/v.swf" quality="high" width="500" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/XMTgyODM2MzI4/v.swf" quality="high" width="470" height="350" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

<embed id="movie_player" name="movie_player" src="http://player.youku.com/player.php/sid/XMTQ4OTU4NDg/v.swf" quality="high" width="500" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>

[root@Mylinux tmp]#

[root@Mylinux tmp]# cat file
<embed type="application/x-shockwave-flash" height="400" width="500" src=" http://static.youku.com/v1.0.011 ... edid=-&showAd=0" pluginspage=" http://www.macromedia.com/go/getflashplayer" wmode="transparent" document.document.form1.="hight"></embed>

<embed menu="true" type="application/x-shockwave-flash" src="http://static.youku.com/v1.0.0025/v/swf/qplayer.swf?VideoIDS=XMTgyODM2MzI4&amp;winType=interior&amp;isShowRelatedVideo=false&amp;showAd=0" width="470" height="350" play="true" loop="True"></embed>

<embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://static.youku.com/v1.0.0115/v/swf/qplayer.swf?VideoIDS=XMTQ4OTU4NDg=&isAutoPlay=true&embedid=-&showAd=0"" width="500" height="400" type="application/x-shockwave-flash" wmode="transparent" document.document.form1.="hight"></embed>

[root@Mylinux tmp]#

论坛徽章:
0
发表于 2010-08-05 16:03 |显示全部楼层
<embed id="movie_player" type="application/x-shockwave-flash" height="400" width="480"
quality="high" src="http://static.youku.com/v1.0.0182/v/swf/qplayer.swf"
pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="isShowRelatedVideo=false&amp;showAd=0&amp;
show_pre=1&amp;show_next=1&amp;VideoIDS=XMTYxNjg3MjQ4&amp;isAutoPlay=false&amp;isDebug=false&amp;UserID=&amp;winType=interior&amp;playMovie=true&amp;
MMControl=true&amp;MMout=false" allowfullscreen="true" wmode="opaque" bgcolor="#FFFFFF" name="movie_player"></embed>


上面的代码前后都带<embed></embed>这个标签

标签的内容:id="movie_player" type="application/x-shockwave-flash" height="400" width="480"
quality="high" src="http://static.youku.com/v1.0.0182/v/swf/qplayer.swf"
pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="isShowRelatedVideo=false&amp;showAd=0&amp;
show_pre=1&amp;show_next=1&amp;VideoIDS=XMTYxNjg3MjQ4&amp;isAutoPlay=false&amp;isDebug=false&amp;UserID=&amp;winType=interior&amp;playMovie=true&amp;
MMControl=true&amp;MMout=false" allowfullscreen="true" wmode="opaque" bgcolor="#FFFFFF" name="movie_player"

把这段替换为:
id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTYxNjg3MjQ4/v.swf" quality="high" width="480" height="400"
align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"

因为我标签内的内容有点差异,想当成字符串来替换。这样标签内的内容差异就不影响替换了。

再取之前的数值:
height="400" width="480" VideoIDS=XMTYxNjg3MjQ4

整合起来并加入标签:
<embed id="movie_player" name="movie_player"
src="http://player.youku.com/player.php/sid/XMTYxNjg3MjQ4/v.swf" quality="high" width="480" height="400"
align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>


其他的格式:
<embed menu="true" loop="true" play="true"
src="http://static.youku.com/v1.0.0025/v/swf/qplayer.swf?VideoIDS=XMTgyMTg2MDQ4&amp;winType=interior&amp;
isShowRelatedVideo=false&amp;showAd=0" width="570" type="application/x-shockwave-flash" height="426"></embed>

这个和上面的区别就大了,所以我想把标签内的当成字符串替换。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP