如何解析数据以获得时间戳与错误代码一起排序

时间:2016-12-20 15:04:16

标签: bash awk

我正在尝试使用特定的字符串" Server-OUT"从我的一个日志文件中计算它出现的字符串文件的次数,如果它的数量大于18,那么只需弹出一封邮件给我,那就好了。

$ awk '/SERVER-OUT/ {print $1, $3}' /licenses/CapSync30/license_logs/770
13:53:21 SERVER-OUT:
13:54:06 SERVER-OUT:

$ awk '/SERVER-OUT/ {print $1, $3}' /licenses/CapSync30/license_logs/770 | cut -d: -f1,2 | tail -2
13:53
13:54

现在,由于日志文件的格式如下所示,我希望减少第一列和第二列,其中第一列有时间,我希望将其精确解析为" 13:53& #34; ,如果这"服务器输出"在13:53之间重复出现超过10次,然后给我发一封包含数据的计数邮件。

  

13:53:21(meta)SERVER-OUT:无法发送消息(86)

在我试图过滤第一个&第二列以及带有SERVER-OUT消息的时间戳(小时:分钟),但是刚刚搞砸了我自己的想法,直到现在为止......

{{1}}

1 个答案:

答案 0 :(得分:2)

不清楚你正在尝试做什么,但也许会给你一些想法

$ echo "13:53:21 (meta) SERVER-OUT: Failed to send the message(86)" | 
  awk '/SERVER-OUT/{split($1,t,":"); print t[1]":"t[2],$3}'

13:53 SERVER-OUT:

$ ... |  awk '/SERVER-OUT/{print substr($1,1,5),$3}'

13:53 SERVER-OUT:

使用第二种替代方法......在提取的值上设置计数器......

$ ... |  awk '/SERVER-OUT/{counter[substr($1,1,5),$3]++} 
              END         {for(k in counter) if(counter[k]>10) exit 1}'

检查退出状态并发送通知......