我在日志文件中的值如下,我想捕获所有相同的数字并对它们进行计数,然后每 10 分钟放入另一个文件中。我们怎样才能做到这一点?
[14/06/2015 14:33:55.311] - WARNING- Conflict detected between two sources !!! id1=67 id2=69 number=1193046 [14/06/2015 14:33:55.607] - WARNING- Conflict detected between two sources !!! id1=70 id2=69 number=1193046 [14/06/2015 14:33:55.886] - WARNING- Conflict detected between two sources !!! id1=69 id2=70 number=466000000 [14/06/2015 14:33:56.086] - WARNING- Conflict detected between two sources !!! id1=64 id2=69 number=1193046 [14/06/2015 14:33:57.064] - WARNING- Conflict detected between two sources !!! id1=70 id2=69 number=1193046 [14/06/2015 14:33:57.074] - WARNING- Conflict detected between two sources !!! id1=64 id2=69 number=1193046 [14/06/2015 14:33:57.454] - WARNING- Conflict detected between two sources !!! id1=68 id2=70 number=466000000 [14/06/2015 14:33:57.657] - WARNING- Conflict detected between two sources !!! id1=68 id2=70 number=466000000 [14/06/2015 14:33:57.657] - WARNING- Conflict detected between two sources !!! id1=68 id2=70 number=466000000 [14/06/2015 14:33:58.309] - WARNING- Conflict detected between two sources !!! id1=67 id2=70 number=466000000 [14/06/2015 14:33:58.610] - WARNING- Conflict detected between two sources !!! id1=70 id2=69 number=1193046 [14/06/2015 14:33:58.814] - WARNING- Conflict detected between two sources !!! id1=68 id2=69 number=1193046 [14/06/2015 14:33:58.874] - WARNING- Conflict detected between two sources !!! id1=69 id2=70 number=466000000
最佳答案
假设 Data::Dump
的输出格式足够好,这对于 Perl 来说是一个微不足道的问题
perl -MData::Dump -e"/number=(\d+)/ and ++$c{$1} while <>; dd \%c;" logfile.log
输出
{ 1193046 => 7, 466000000 => 6 }
如果(无论出于何种原因)您无法安装 Data::Dump
,那么核心模块 Data::Dumper
的输出会稍微不那么整齐
perl -MData::Dumper -e"/number=(\d+)/ and ++$c{$1} while <>; print Dumper \%c;" logfile.log
输出
$VAR1 = {
'1193046' => 7,
'466000000' => 6
};
关于linux - 从日志文件中搜索值和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828941/