linux - 从日志文件中搜索值和计数

标签 linux bash perl shell unix

我在日志文件中的值如下,我想捕获所有相同的数字并对它们进行计数,然后每 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/

相关文章:

php -/usr/share 中 php 和 php5 目录的用途

android - 在 Linux 桌面上运行 Android NDK 二进制文件

perl:如何区分文件是否不存在或我对路径没有权限

linux - ubuntu 中的 etc/profile 文件意外结束

linux - 如何在 grep 中指定忽略模式?

ruby - 使用 Homebrew 安装 Ruby

bash - 如何将同一个 AMI 同时复制到多个区域?

Bash:如何从数字中提取数字

perl - 如何包含位于不同目录中的 Perl 模块?

regex - Perl 正则表达式条件匹配