Chinaunix

标题: 提取一行中的特定字符段 [打印本页]

作者: 无声无息    时间: 2008-07-29 10:51
标题: 提取一行中的特定字符段
gameOverSrc:"images/background/gameOverCh.gif",missionCompletedSrc:"images/background/missionCompletedCh.gif",mainPictureTitle:"mainTitleCh"},english:{startGame:"Start Game",keySetting:"Key Setting",level:"Level",languageSetting:"Language",chinese:"Chinese",english:"English",creator:"Creator",normal:"Normal",hard:"Hard",crazy:"Crazy",gameKeyConfigure:"Game Key Configure",currentGameLevel:"Current Game Level",keyUp:"Up",keyDown:"Down",keyLeft:"Left",keyRight:"Right",keyShot:"Shot",keyBomb:"Bomb",gameDesigner:"Game Designer",graphicDesigner:"Graphic Designer",programer:"Programer",contentMe:"Content Me",gameOverSrc:"images/background/gameOverEn.gif",missionCompletedSrc:"images/background/missionCompletedEn.gif",mainPictureTitle:"mainTitleEn"},changeTo:function(languageCode){eval("global.languageResource=this."+languageCode+";")

需求,提取上文中missionCompletedCh.gif等字段,实现把所有gif的文件名找出来。所有的代码处在一行
如上面例子:
missionCompletedCh.gif
gameOverEn.gif
missionCompletedEn.gif

没想出来用shell该怎么提取?大伙给点意见
作者: ly5066113    时间: 2008-07-29 10:56
grep -o '[^/]*\.gif'
作者: 无声无息    时间: 2008-07-29 10:58
标题: 回复 #2 ly5066113 的帖子
现在问题是有些gif在根目录下,也就是没有含有/的特征字符
作者: blackold    时间: 2008-07-29 11:00
grep -Eo '\<[a-zA-Z0-9_]+\.gif' urdata
作者: 爱知    时间: 2008-07-29 11:10
一个笨办法
$awk 'BEGIN{RS=".gif\""}{print}' file|while read name; do   basename "$name"; done|sed '/:/d;/^$/d;s/$/.gif/'
gameOverCh.gif
missionCompletedCh.gif
gameOverEn.gif
missionCompletedEn.gif
$
作者: 无声无息    时间: 2008-07-29 11:12
标题: 回复 #4 blackold 的帖子
文件名不一定只是字母和数字,可以是其他符号
作者: merlin852    时间: 2008-07-29 11:16
原帖由 ly5066113 于 2008-7-29 10:56 发表
grep -o '[^/]*\.gif'

这个简单
作者: blackold    时间: 2008-07-29 11:17
标题: 回复 #6 无声无息 的帖子
那就根据你的具体情况指定了。
作者: 爱知    时间: 2008-07-29 11:17
原帖由 无声无息 于 2008-7-29 11:12 发表
文件名不一定只是字母和数字,可以是其他符号

不含什么字符?
作者: 无声无息    时间: 2008-07-29 11:17
如果需要提取到gif的绝对路径呢?

绝对路径可以含有/,也可能没有/
作者: blackold    时间: 2008-07-29 11:20
标题: 回复 #10 无声无息 的帖子
我觉得这种问题的解决方法取决于你的数据文件,要知道你的想要的东西在数据文件中是如何表现的。
作者: 无声无息    时间: 2008-07-29 11:24
标题: 回复 #11 blackold 的帖子
有代表性的一段
function initializePlane(){This.plane1=new Image();This.plane1.onload=This.updateLoading;This.plane1.src="images/planes/plane1.gif";This.plane1CountImage=new Image();This.plane1CountImage.onload=This.updateLoading;This.plane1CountImage.src="images/planes/plane1Count.gif";};function initializePlaneBullet(){This.planeBullet1=new Image();This.planeBullet1.onload=This.updateLoading;This.planeBullet1.src="images/planeBullets/planeBullet1_Power1.gif";This.planeBullet2=new Image();This.planeBullet2.onload=This.updateLoading;This.planeBullet2.src="images/planeBullets/planeBullet1_Power2.gif";This.planeBullet3=new Image();This.planeBullet3.onload=This.updateLoading;This.planeBullet3.src="images/planeBullets/planeBullet1_Power3.gif";This.concentrationBullet1=new Image();This.concentrationBullet1.onload=This.updateLoading;This.concentrationBullet1.src="images/planeBullets/concentrationBullet1.gif";};function initializeBonus(){This.powerBonus1=new Image();This.powerBonus1.onload=This.updateLoading;This.powerBonus1.src="images/bonus/powers/power1.gif";This.bombBonus1=new Image();This.bombBonus1.onload=This.updateLoading;This.bombBonus1.src="images/bonus/bombs/bomb1.gif";This.bombStateImage=new Image();This.bombStateImage.onload=This.updateLoading;This.bombStateImage.src="images/bonus/bombs/":"listBomb1":".gif";};function initializeAnimation(){This.concentration1=new Array();for(var i=0;i<10;i++){This.concentration1=new Image();This.concentration1.onload=This.updateLoading;This.concentration1.src="images/animations/concentration1/"+i+".gif";This.totalLoad++;}This.bombing1=new Array()

需要将gif的路径找出来。

例如
images/bonus/bombs/":"listBomb1":".gif
images/animations/concentration1/"+i+".gif

[ 本帖最后由 无声无息 于 2008-7-29 11:25 编辑 ]
作者: ly5066113    时间: 2008-07-29 11:28
原帖由 无声无息 于 2008-7-29 11:24 发表
有代表性的一段
function initializePlane(){This.plane1=new Image();This.plane1.onload=This.updateLoading;This.plane1.src="images/planes/plane1.gif";This.plane1CountImage=new Image();This.plane1Co ...


grep -o '[^=]*\.gif' urfile | sed 's/"//'

[ 本帖最后由 ly5066113 于 2008-7-29 11:31 编辑 ]
作者: walkerxk    时间: 2008-07-29 11:30
grep -o '[^=]*\.gif'|sed 's/"//'
作者: 无声无息    时间: 2008-07-29 11:30
标题: 回复 #13 ly5066113 的帖子
ly兄看错了什么意思?

等你出手了
作者: blackold    时间: 2008-07-29 11:31
标题: 回复 #12 无声无息 的帖子
try:
  1. $ grep -Eo 'src=[^=]+\.gif' urfile|sed 's/^src=.//'|sort -u
  2. images/animations/concentration1/"+i+".gif
  3. images/bonus/bombs/":"listBomb1":".gif
  4. images/bonus/bombs/bomb1.gif
  5. images/bonus/powers/power1.gif
  6. images/planeBullets/concentrationBullet1.gif
  7. images/planeBullets/planeBullet1_Power1.gif
  8. images/planeBullets/planeBullet1_Power2.gif
  9. images/planeBullets/planeBullet1_Power3.gif
  10. images/planes/plane1.gif
  11. images/planes/plane1Count.gif
复制代码

作者: 无声无息    时间: 2008-07-29 11:40
标题: 回复 #16 blackold 的帖子
最终是找分割符号问题

我小白了

src=作为特征可以的。

貌似没有src=做文件名的,如果其他文件有,就不确定。一般程序员都不会这么命名

这么招先,thx大家
作者: 无声无息    时间: 2008-07-29 11:41
回复 #14 walkerxk 的帖子

回复 #13 ly5066113 的帖子

thx,目前文件是可以的
作者: mo_yuan_ming    时间: 2008-07-29 11:46
呵呵 学习了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2