免费注册 查看新帖 |

Chinaunix

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

求助两段小script用于遍历文件抓取信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-08 22:15 |只看该作者 |倒序浏览
1. 现有目录结构如下 $workdir/nodenameX/leafY.log, 其中nodename为字符串(例如 node, mynode,myserver等,不定),X,Y为数字,长度不固定,workdir下有多个nodenameX子目录,每个子目录下有多个leaf*.log文件。现在要从所有的leaf*.log中抓取一些信息, 然后对抓取结果做判断进行进一步处理。目前是这样做的:

  1. @result = qx(grep "testInfo" -r $workdir);
  2. foreach(@result){
  3.    if($_=~ /\((\d+)\)(.*)\((\d+)\)/){
  4.              Output($_);   
  5.        }
  6. }
复制代码
在实际运行中当文件比较多(几百)的时候感觉是要假死很长时间才会给出结果,想求一个更好的方式。
  
2.与1.情况不同,leaf*.log分散在多个实际的node节点机器上,同样还是想从每个leaf上抓取一些信息,目前的做法是将所有的leaf*.log scp到host主机上再做处理,文件一多速度还是惨不忍睹,有没有更好的方法?
  
初学perl,之前也没接触过正则,纯新手,希望可以得到一些指导,先谢谢各位了!

论坛徽章:
0
2 [报告]
发表于 2014-05-09 12:04 |只看该作者
1 用OPENDIR READDIR会不会好一些 或者把这个testInfo换成glob看是不是快一点
2 当然是把程序分布到各个节点机上过滤以后再传输效率最高
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP