Chinaunix

标题: 求助两段小script用于遍历文件抓取信息 [打印本页]

作者: logiccat    时间: 2014-05-08 22:15
标题: 求助两段小script用于遍历文件抓取信息
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,之前也没接触过正则,纯新手,希望可以得到一些指导,先谢谢各位了!
作者: remark    时间: 2014-05-09 12:04
1 用OPENDIR READDIR会不会好一些 或者把这个testInfo换成glob看是不是快一点
2 当然是把程序分布到各个节点机上过滤以后再传输效率最高




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