从日志文件中获取特定日期的单词并查找每小时的计数

时间:2014-11-22 07:53:03

标签: grep

我在以下模式的日志文件中有数据

2014-11-21 14:33:25.8934 [224] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 14:35:20.8934 [224] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [224] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [224] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [219] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [219] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [219] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [219] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [219] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [161] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [161] IMP orange.at.banana - no error
2014-11-21 15:37:25.8934 [161] IMP orange.at.banana - noerror
2014-11-21 15:37:25.8934 [161] IMP orange.at.banana - error occurs this hour @KEY_VALUE_TYPE='
2014-11-21 15:37:25.8934 [161] IMP orange.at.banana - no error

我有不同日期的日志文件。我想grep @KEY_VALUE_TYPE ='在每个小时的不同日期(例如14-11-21,14-11-20),也想找到它的数量。

请为此提出一些解决方案。

我尝试使用grep命令并且能够找到@KEY_VALUE_TYPE ='的计数(但不是按小时计算)。目前的日期。

1 个答案:

答案 0 :(得分:0)

cat logfile.log | grep "@KEY_VALUE_TYPE='" | sed "s/:.*$//g" | uniq -c

此:

  1. 使用grep仅查找您想要的行
  2. 使用sed删除除日期和小时之外的所有细节。基本上它表示匹配从第一个冒号到行尾的所有内容,并将其替换为空。
  3. 使用uniq为您提供每小时出现的次数。
  4. 输出:

      2 2014-11-21 14
      9 2014-11-21 15
    

    请注意,uniq需要对您的数据进行排序,但是您使用日志文件并根据时间戳进行计数,它已经排序。否则,您可以在sort

    之前添加uniq步骤