免费注册 查看新帖 |

Chinaunix

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

windows下如何用Perl从日志中截取最后一个命令的返回结果 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-26 12:01 |只看该作者 |倒序浏览
问题1:所有命令的执行结果都存在一个txt格式的日志文件中,格式如下
$show alarm
aaaaaaaaa
bbbbbbbbb
cccccccccccc
$show config
ddddddddd
eeeeeeeeee
fffffffffffffffffff
$show alarm
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiiiiiiii
$
要求从文件中提取命令最后一次出现到出现下一个提示符之间部分的文本
如上,如果要求返回show alarm命令的执行结果,则结果内容应该为:
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiiiiiiii
请问该怎么做。
特别说明,因为文件很大,所以不打算采用逐行读取文件遍历的方法,是否有其他通过正则表达式实现的方法,还请高手赐教
问题2:如何取出文件最后一行的内容(不能是逐行遍历法)
以上两个问题都是windows环境下的perl实现
非常感谢

论坛徽章:
0
2 [报告]
发表于 2010-11-26 12:30 |只看该作者
本帖最后由 bzdghdn 于 2010-11-26 12:34 编辑

第二个问题:
    建议看看File::ReadBackwards或者File::Bidirectional
第一个问题:
    用 File::ReadBackwards从日志文件末尾往前读,读到某个命令在程序中第一次出现应该就是它在文件中最后一次出现

论坛徽章:
0
3 [报告]
发表于 2010-11-26 12:56 |只看该作者
第一个问题,文件很大,用正则可能不现实,即使可以,效率也不见得比遍历高;

第二个问题,应该可以用seek函数定位,不过我没这样做过。

等高手出现。

论坛徽章:
0
4 [报告]
发表于 2010-11-26 13:30 |只看该作者
本帖最后由 li_000828 于 2010-11-26 14:41 编辑

第一个用这个试试,不知效率如何:
  1. #!/usr/bin/perl
  2. open LOG,'log.txt';
  3. undef $/;
  4. $str=<LOG>;
  5. $str =~ /\$\w+\s+\w+\n([\w\s]+)\n\$$/s;
  6. print "$1\n";close(LOG);
复制代码
第二个用这个试试:
  1. #!/usr/bin/perl
  2. open LOG,'log.txt';
  3. undef $/;
  4. $str=<LOG>;
  5. $str =~ /\n(.*)$/;
  6. print "$1\n";
  7. close(LOG);
复制代码

论坛徽章:
0
5 [报告]
发表于 2010-11-26 13:56 |只看该作者
第一个用这个试试,不知效率如何:第二个用这个试试:
li_000828 发表于 2010-11-26 13:30



    第一个:文件大,不让用遍历,就只能读到一个变量里。应该是文件越大,用遍历越快吧?
   第二个:也不让用遍历,还得一样找 "\n"。

论坛徽章:
0
6 [报告]
发表于 2010-11-26 13:59 |只看该作者
回复 5# x9x9


    用全文本模式,对读取文本的效率也影响大吗?

论坛徽章:
0
7 [报告]
发表于 2010-11-26 14:03 |只看该作者
第一个问题,文件很大,用正则可能不现实,即使可以,效率也不见得比遍历高;

第二个问题,应该可以用se ...
iamlimeng 发表于 2010-11-26 12:56


可能遍历的效率稍微高一点吧···没试过····
问题二···用Tail之类的模块··但不知效率如何···
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP