博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Perl 按时间排序日志
阅读量:5323 次
发布时间:2019-06-14

本文共 1810 字,大约阅读时间需要 6 分钟。

 

log before sort:

15:49:01.447|TestClass:2796| TestClass::stop for err 2267433

TestClass|sss|36.440124880|15:45:53.627|TestClass:1536| Done waiting for InitDone.
TestClass|sss|224.261229480|15:49:01.448|TestClass:1162| ERROR: The following module's link went down
TestClass|sss|37.750263800|15:45:54.937|TestClass:1626| Entering monitor Loop

log after sort:

TestClass|sss|36.440124880|15:45:53.627|TestClass:1536| Done waiting for InitDone.

TestClass|sss|37.750263800|15:45:54.937|TestClass:1626| Entering monitor Loop
15:49:01.447|TestClass:2796| TestClass::stop for err 2267433
TestClass|sss|224.261229480|15:49:01.448|TestClass:1162| ERROR: The following module's link went down

 

Perl脚本:

#!/usr/bin/perluse warnings;use strict;#打开日志文件,将文件内容读取到列表@filein中my $filepath = shift or die "\nPlease input src file path and dst file path\n";open INFILE, $filepath or die ;my @filein=
;my @result;#日期匹配函数,匹配含有日期的行,然后将匹配得到时间字符串和对应的匹配行保存到一个列表中,并返回该列表的引用sub matchDate { if (/(\d+:\d+:\d+.\d+)/) { return [$1, $_]; } else { return [" ", $_]; }}#比较函数,该函数的输入参数是列表引用(matchDate函数返回的引用),因此比较时需要使用$a->[0]来获取sub sortDate { $a->[0] cmp $b->[0]; } #a, b 是sort的默认输入参数,可参见sortb帮助 perldoc -f sort#该语句嵌套调用了多个perl函数,最终返回排序后的结果保存在@result中@result= map {
$_->[1]} #3. map 函数将2.中sort排序后的所有列表元素中的第2个元素(日志行) # 提取出来,生成新的列表。 sort sortDate #2. sort函数对1.中map生成的列表,使用sortDate进行排序 map {matchDate} @filein; #1. 对@filein中的元素执行表达式{matchDate}后,生成一个新的列表; # 根据matchDate子程序,可以知道新生成的列表的元素格式为 # [日志行中的日期, 对应的日志行]close INFILE;print @result;

 

转载于:https://www.cnblogs.com/sunhuijian/archive/2013/01/31/2888247.html

你可能感兴趣的文章
CentOS7安装CDH 第十一章:离线升级CDH版本
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
EasyAACEncoder海思/ARM平台优化G711、G726转AAC的CPU占用高问题
查看>>
HttpGet和HttpPost
查看>>
oc基本控件
查看>>
迷宫问题
查看>>
用JavaScript截图
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
NOIP2013提高组 解题报告
查看>>
Qt中文乱码解决思路
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
[Apple开发者帐户帮助]六、配置应用服务(3)创建地图标识符和私钥
查看>>
poj2388---求奇数个数字的最中间的数
查看>>
对闭包的理解
查看>>
java.lang.OutOfMemoryError异常解决方法
查看>>
Css让文字自适应Table宽度[转]
查看>>
[Javascript] Flattening nested arrays: a little exercise in functional refactoring
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>