我正在尝试使用特定的字符串" 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}}
答案 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}'
检查退出状态并发送通知......