免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求助字符串的处理问题:如何读入一个文本文件,并查找相应字符串,赋值给变量? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-18 18:30 |只看该作者 |倒序浏览
本帖最后由 wangmice 于 2014-09-18 18:34 编辑

比如我有一个html文件:
内容如下
  1. <html>
  2. <head>
  3.         <title>ChinaNet</title>
  4.         <meta http-equiv="Content-Type" Content="text/html; Charset=gb2312">
  5.         <meta http-equiv="Content-Language" Content="zh-CN">
  6. </head>
  7. <script type="text/javascript">
  8.         if (window != top) top.location =window.location;
  9.         window.moveTo(0,0);
  10.         window.resizeTo(screen.width,screen.height-30);
  11. </script>
  12. <frameset rows="0,*" frameborder="no" cols="*" border="0" framespacing="0" >
  13. <frame name="hiddenFrame" scrolling="NO" frameborder="0" noresize src="blank.html" >
  14. <frame name="mainFrame" src="/style/portalv4/index.jsp?paramStr=9M%2B7JzF%2B8VM0J3SkAiy4%2FMr8PSX%2BPFogahDPxZk0GKDHvs2EZ2b1q9QM3a8ZRnsMyPaPKAK90j4e%0AyGC75CGfU5Ts0%2BeIZ2naavnnm8dPOV1e3JUA1SRs8UNu%2Bhvd29qFJ2JXb3cA4sdiDa6yG9BQOuKF%0AcOxo57uQALJEOvsCeYNTEXeN%2BXbnDwSW9vmGFG3PQgINttFEn%2Bg9oXdjJ67vr%2BNbQGTujmNEB2QW%0AlVvX07UBUhj2pzqZSniOC2b3q%2BnxdbBy%2BPLk96Wv6my6gR1OhPlcjHlOy1pV33oC6TIKunRxRQZ%2F%0ATdyRlN6WhOVT%2FY2yHkM1bkh0gR6qP8DPQIoV2IYF1WSEQie493UqEKlaR9avMvoDeu9m%2FSSw1hnK%0ATGImTM5NMUfIm1ntjjY3OKeoOw%3D%3D" noresize scrolling="auto">
  15. </frameset>
  16. </html>
复制代码
我要的是截取字符串mainframe的src的内容
/style/portalv4/index.jsp?paramStr=9M%2B7JzF%2B8VM0J3SkAiy4%2FMr8PSX%2BPFogahDPxZk0GKDHvs2EZ2b1q9QM3a8ZRnsMyPaPKAK90j4e%0AyGC75CGfU5Ts0%2BeIZ2naavnnm8dPOV1e3JUA1SRs8UNu%2Bhvd29qFJ2JXb3cA4sdiDa6yG9BQOuKF%0AcOxo57uQALJEOvsCeYNTEXeN%2BXbnDwSW9vmGFG3PQgINttFEn%2Bg9oXdjJ67vr%2BNbQGTujmNEB2QW%0AlVvX07UBUhj2pzqZSniOC2b3q%2BnxdbBy%2BPLk96Wv6my6gR1OhPlcjHlOy1pV33oC6TIKunRxRQZ%2F%0ATdyRlN6WhOVT%2FY2yHkM1bkh0gR6qP8DPQIoV2IYF1WSEQie493UqEKlaR9avMvoDeu9m%2FSSw1hnK%0ATGImTM5NMUfIm1ntjjY3OKeoOw%3D%3D

但是要找的内容/style/portalv4/index.jsp?paramStr=后面的内容却不是固定的。怎么单独提取出来啊?

新手在这里谢过了。

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
2 [报告]
发表于 2014-09-18 18:55 |只看该作者
回复 1# wangmice
awk -F '[= ]+' -v RS=">" '/"mainFrame" src="/{print $6}' FILE
9M%2B7JzF%2B8VM0J3SkAiy4%2FMr8PSX%2BPFogahDPxZk0GKDHvs2EZ2b1q9QM3a8ZRnsMyPaPKAK90j4e%0AyGC75CGfU5Ts0%2BeIZ2naavnnm8dPOV1e3JUA1SRs8UNu%2Bhvd29qFJ2JXb3cA4sdiDa6yG9BQOuKF%0AcOxo57uQALJEOvsCeYNTEXeN%2BXbnDwSW9vmGFG3PQgINttFEn%2Bg9oXdjJ67vr%2BNbQGTujmNEB2QW%0AlVvX07UBUhj2pzqZSniOC2b3q%2BnxdbBy%2BPLk96Wv6my6gR1OhPlcjHlOy1pV33oC6TIKunRxRQZ%2F%0ATdyRlN6WhOVT%2FY2yHkM1bkh0gR6qP8DPQIoV2IYF1WSEQie493UqEKlaR9avMvoDeu9m%2FSSw1hnK%0ATGImTM5NMUfIm1ntjjY3OKeoOw%3D%3D"

   

论坛徽章:
0
3 [报告]
发表于 2014-09-18 19:07 |只看该作者
回复 2# zxy877298415


    谢谢,好像可以,但是最后多了个双引号?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2014-09-18 19:12 |只看该作者
awk '/<frame name="mainFrame" src="/{print a[match($0,/<frame name="mainFrame" src="\/([^"]*)".*/,a)]}' file
没测试

论坛徽章:
0
5 [报告]
发表于 2014-09-18 19:14 |只看该作者
回复 4# yinyuemi


谢谢了,完全OK,等我好好研究一下,非常感谢啊。   

论坛徽章:
0
6 [报告]
发表于 2014-09-18 19:20 |只看该作者
回复 2# zxy877298415

如何把最后多出来的双引号去掉啊?
   

论坛徽章:
10
金牛座
日期:2014-09-16 19:02:48技术图书徽章
日期:2015-11-24 01:37:29操作系统版块每日发帖之星
日期:2015-11-18 06:20:002015年亚洲杯之沙特阿拉伯
日期:2015-04-13 17:33:462015年迎新春徽章
日期:2015-03-04 09:51:162015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2014-12-04 19:33:55白羊座
日期:2014-09-17 19:34:42巨蟹座
日期:2014-09-16 21:09:4815-16赛季CBA联赛之同曦
日期:2016-06-27 23:23:07
7 [报告]
发表于 2014-09-18 19:28 |只看该作者
sed -n 's/^.*" src="\(.*\)" no.*/\1/gp' html

/style/portalv4/index.jsp?paramStr=9M%2B7JzF%2B8VM0J3SkAiy4%2FMr8PSX%2BPFogahDPxZk0GKDHvs2EZ2b1q9QM3a8ZRnsMyPaPKAK90j4e%0AyGC75CGfU5Ts0%2BeIZ2naavnnm8dPOV1e3JUA1SRs8UNu%2Bhvd29qFJ2JXb3cA4sdiDa6yG9BQOuKF%0AcOxo57uQALJEOvsCeYNTEXeN%2BXbnDwSW9vmGFG3PQgINttFEn%2Bg9oXdjJ67vr%2BNbQGTujmNEB2QW%0AlVvX07UBUhj2pzqZSniOC2b3q%2BnxdbBy%2BPLk96Wv6my6gR1OhPlcjHlOy1pV33oC6TIKunRxRQZ%2F%0ATdyRlN6WhOVT%2FY2yHkM1bkh0gR6qP8DPQIoV2IYF1WSEQie493UqEKlaR9avMvoDeu9m%2FSSw1hnK%0ATGImTM5NMUfIm1ntjjY3OKeoOw%3D%3D

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
8 [报告]
发表于 2014-09-18 19:40 |只看该作者
  1. grep -Po '(?<=name="mainFrame" src=")[^"]+' file
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-09-18 19:55 |只看该作者
回复 8# reyleon


    这个也是行的,谢谢了。能解释一下么?

论坛徽章:
0
10 [报告]
发表于 2014-09-18 19:57 |只看该作者
还有一段,稍微复杂一点的原文件是这样的:
  1. <div class="menu_bg">

  2.   <div class="menuw">

  3.      <div class="menul" id="title1" ><a href="/?paramStr=COqXYOzD8pv6cqCP2xM%2F1SCivPTIX3lV9%2B9dZmPotygIT07tav4gmkV3YaJk2R6lFELpy6M0smNc%0AMQPUW0HlQCf%2BfggbMODzdNWJXUBe7PolMOoUCaIjhqDSo2yjgW5FIJMekgOpg1eJp%2FUZobDZ80FM%0AyVEsn38hKOLWiAREQ7MF3PrF2BKOncfyOSba9CgnL4KKm%2Fdhh6gjxgAbH3%2BzG06mdicDoK4iDZ02%0AkDPwWRmhHxVkKzhh2XIaClpwQBYY6EHiLe%2B92fm8%2Fjyl9shhv%2FvCHsIVG24vu9jVoMWpuYyM5QID%0AZYnhny35P54zz1qcK8%2ByfdFq%2FE3rEN7I21KNLWR8bPkAdhdMdJkLUc5xW9BxRQZ%2FTdyRlEvmHglf%0A7grYr7OorOlDy%2F09ahxFXJkdj74IypFWhrjc3%2BxkrnV%2B%2Frs%3D" target="_top">首页</a></div>

  4.      <div class="menul" id="title2" ><a href="http://wlan.vnet.cn" target="_new">热点搜索</a></div>

  5.      <div class="menul" id="title3" ><a href="http://sh.189.cn/" target="_new">网上营业厅</a></div>

  6.      <div class="menul" id="title4" ><a href="/style/portalv4/index.jsp?paramStr=COqXYOzD8pv6cqCP2xM%2F1SCivPTIX3lV9%2B9dZmPotygIT07tav4gmkV3YaJk2R6lFELpy6M0smNc%0AMQPUW0HlQCf%2BfggbMODzdNWJXUBe7PolMOoUCaIjhqDSo2yjgW5FIJMekgOpg1eJp%2FUZobDZ80FM%0AyVEsn38hKOLWiAREQ7MF3PrF2BKOncfyOSba9CgnL4KKm%2Fdhh6gjxgAbH3%2BzG06mdicDoK4iDZ02%0AkDPwWRmhHxVkKzhh2XIaClpwQBYY6EHiLe%2B92fm8%2Fjyl9shhv%2FvCHsIVG24vu9jVoMWpuYyM5QID%0AZYnhny35P54zz1qcK8%2ByfdFq%2FE3rEN7I21KNLWR8bPkAdhdMdJkLUc5xW9BxRQZ%2FTdyRlEvmHglf%0A7grYr7OorOlDy%2F09ahxFXJkdj74IypFWhrjc3%2BxkrnV%2B%2Frs%3D&clkid=4" target="_new">常见问题</a></div>

  7.      <div class="menult" id="title5" ><a href="http://wifi.189.cn" target="_new">时长卡购买</a></div>

  8.      <div class="menur">

  9.             

  10.                         <a href="javascript:selectLanguage('en');">English</a>

  11.                

  12.      </div>

  13.   </div>

  14. </div>

  15. <div class="conb">       



  16. <script type="text/javascript">

  17.         var reqUrl="/style/portalv4/index.jsp?paramStr=COqXYOzD8pv6cqCP2xM%2F1SCivPTIX3lV9%2B9dZmPotygIT07tav4gmkV3YaJk2R6lFELpy6M0smNc%0AMQPUW0HlQCf%2BfggbMODzdNWJXUBe7PolMOoUCaIjhqDSo2yjgW5FIJMekgOpg1eJp%2FUZobDZ80FM%0AyVEsn38hKOLWiAREQ7MF3PrF2BKOncfyOSba9CgnL4KKm%2Fdhh6gjxgAbH3%2BzG06mdicDoK4iDZ02%0AkDPwWRmhHxVkKzhh2XIaClpwQBYY6EHiLe%2B92fm8%2Fjyl9shhv%2FvCHsIVG24vu9jVoMWpuYyM5QID%0AZYnhny35P54zz1qcK8%2ByfdFq%2FE3rEN7I21KNLWR8bPkAdhdMdJkLUc5xW9BxRQZ%2FTdyRlEvmHglf%0A7grYr7OorOlDy%2F09ahxFXJkdj74IypFWhrjc3%2BxkrnV%2B%2Frs%3D";

  18.         var clkid="1";

  19.         var provider = "null";

  20.         function changeCSS(clkid){

  21.                 document.getElementById("title"+clkid).className="menulo";

  22.         }

  23.         function selectLanguage(language){

  24.                 var herfurl = reqUrl+"&language="+language+"&clkid="+clkid;

  25.                 //alert(provider);

  26.                 if(provider && provider != "null")

  27.                         herfurl+="&provider="+provider;

  28.                 window.location.href=herfurl;

  29.         }
复制代码
想取到其中的验证码:
COqXYOzD8pv6cqCP2xM%2F1SCivPTIX3lV9%2B9dZmPotygIT07tav4gmkV3YaJk2R6lFELpy6M0smNc%0AMQPUW0HlQCf%2BfggbMODzdNWJXUBe7PolMOoUCaIjhqDSo2yjgW5FIJMekgOpg1eJp%2FUZobDZ80FM%0AyVEsn38hKOLWiAREQ7MF3PrF2BKOncfyOSba9CgnL4KKm%2Fdhh6gjxgAbH3%2BzG06mdicDoK4iDZ02%0AkDPwWRmhHxVkKzhh2XIaClpwQBYY6EHiLe%2B92fm8%2Fjyl9shhv%2FvCHsIVG24vu9jVoMWpuYyM5QID%0AZYnhny35P54zz1qcK8%2ByfdFq%2FE3rEN7I21KNLWR8bPkAdhdMdJkLUc5xW9BxRQZ%2FTdyRlEvmHglf%0A7grYr7OorOlDy%2F09ahxFXJkdj74IypFWhrjc3%2BxkrnV%2B%2Frs%3D

怎么取法啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP