- 论坛徽章:
- 1
|
本帖最后由 winway1988 于 2012-03-17 10:35 编辑
- [winway@winway test]$ awk -f awkscr urfile
- 报警等级
- 紧急
- 路由器 RTA 1次
- web服务器 CPU使用率高 2次
- 主机23 time out 1次
- 告警
- 主机23 load average 2次
- [winway@winway test]$ cat awkscr
- NR == 1 {
- print $1;
- }
- NR > 1 && $1 !~ "恢复" {
- a[$1];
- gsub(/:/, " ", $3);
- time = mktime("2012 1 1 " $3); # to fit the mktime(), I choose the date "2012 1 1", nothing important
- sub(/=[0-9]*$/, "", $4);
- if (NF == 6)
- $5 = "";
- else if (NF == 7)
- sub(/:[0-9]*/, "", $5);
- for (i in b) {
- if (i ~ $1 OFS $2 OFS $4 OFS $5) {
- # to compute absolute value
- abs_value = (time - b[i]) - (b[i] - time);
- abs_value = abs_value > 0 ? abs_value / 2 : (0 - abs_value) / 2;
- if (abs_value <= 60) {
- # event occur in one minute, do not add to array
- next;
- }
- }
- }
- b[$1 OFS $2 OFS $4 OFS $5 ":" time] = time;
- }
- END {
- for (i in b) {
- sub(/[ \t]*:[0-9]*/, "", i); # delete time str
- c[i]++;
- }
- for (j in a) {
- print j;
- for (k in c) {
- if (k ~ j) {
- temp = k;
- sub(/^[^ ]* /, "", temp);
- print temp, c[k] "次";
- }
- }
- }
- }
复制代码 |
|