windows下如何用Perl从日志中截取最后一个命令的返回结果
时间:2010-11-26
来源:互联网
$show alarm
aaaaaaaaa
bbbbbbbbb
cccccccccccc
$show config
ddddddddd
eeeeeeeeee
fffffffffffffffffff
$show alarm
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiiiiiiii
$
要求从文件中提取命令最后一次出现到出现下一个提示符之间部分的文本
如上,如果要求返回show alarm命令的执行结果,则结果内容应该为:
gggggggggggg
hhhhhhhhhhhh
iiiiiiiiiiiiiiiii
请问该怎么做。
特别说明,因为文件很大,所以不打算采用逐行读取文件遍历的方法,是否有其他通过正则表达式实现的方法,还请高手赐教
问题2:如何取出文件最后一行的内容(不能是逐行遍历法)
以上两个问题都是windows环境下的perl实现
非常感谢
作者: tramplzh 发布时间: 2010-11-26
第二个问题:
建议看看File::ReadBackwards或者File::Bidirectional
第一个问题:
用 File::ReadBackwards从日志文件末尾往前读,读到某个命令在程序中第一次出现应该就是它在文件中最后一次出现
作者: bzdghdn 发布时间: 2010-11-26
第二个问题,应该可以用seek函数定位,不过我没这样做过。
等高手出现。
作者: iamlimeng 发布时间: 2010-11-26
第一个用这个试试,不知效率如何:
- #!/usr/bin/perl
- open LOG,'log.txt';
- undef $/;
- $str=<LOG>;
- $str =~ /\$\w+\s+\w+\n([\w\s]+)\n\$$/s;
- print "$1\n";close(LOG);
- #!/usr/bin/perl
- open LOG,'log.txt';
- undef $/;
- $str=<LOG>;
- $str =~ /\n(.*)$/;
- print "$1\n";
- close(LOG);
作者: li_000828 发布时间: 2010-11-26
li_000828 发表于 2010-11-26 13:30
第一个:文件大,不让用遍历,就只能读到一个变量里。应该是文件越大,用遍历越快吧?
第二个:也不让用遍历,还得一样找 "\n"。
作者: x9x9 发布时间: 2010-11-26
用全文本模式,对读取文本的效率也影响大吗?
作者: li_000828 发布时间: 2010-11-26
第二个问题,应该可以用se ...
iamlimeng 发表于 2010-11-26 12:56
可能遍历的效率稍微高一点吧···没试过····
问题二···用Tail之类的模块··但不知效率如何···
作者: wfnh 发布时间: 2010-11-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28