- 论坛徽章:
- 93
|
不确定是不是你所要,也不知道结果对不对,你确认一下:- [seesea@UC log]$ awk -f log.awk duanxin.txt
- 故障总数:10
- 故障id:463
- 发生时间:2012-10-15 08:19
- 发现时间:08:04
- 发送短信时间:2012-10-15 8:21:35
- 故障总数:40
- 故障id:454
- 发生时间:2012-10-09 13:22
- 发现时间:13:22
- 发送短信时间:2012-10-9 13:44:15
- 故障总数:1
- 故障id:456
- 发生时间:2012-10-07 20:02
- 发现时间:20:02
- 发送短信时间:2012-10-10 11:29:04
- 故障总数:24
- 故障id:466
- 发生时间:2012-10-16 23:51
- 发现时间:23:46
- 发送短信时间:2012-10-16 23:56:25
- 故障总数:9
- 故障id:460
- 发生时间:2012-10-09 21:01
- 发现时间:20:47
- 发送短信时间:2012-10-9 21:14:43
- 故障总数:14
- 故障id:451
- 发生时间:2012-10-05 12:24
- 发现时间:12:30
- 发送短信时间:2012-10-5 13:11:19
- 故障总数:13
- 故障id:452
- 发生时间:2012-10-07 03:03
- 发现时间:03:10
- 发送短信时间:2012-10-7 3:24:28
复制代码- BEGIN {
- state = -1
- }
- /故障提醒:故障ID为/ {
- change_state()
- if (! is_state_right(0))
- {
- reset_state()
- next
- }
- if (match($0, /[0-9]+/) == 0)
- {
- reset_stat()
- next
- }
- id = substr($0, RSTART, RLENGTH)
- }
- /^发生:/ {
- change_state()
- if (! is_state_right(1))
- {
- reset_state()
- next
- }
- sub(/发生:/, "", $0)
- occur = $0
- }
- /^发现:/ {
- change_state()
- if (! is_state_right(2))
- {
- reset_state()
- next
- }
- sub(/发现:/, "", $0)
- found = $0
- }
- /正式通知 接收时间:/ {
- change_state()
- is_state_right(3)
- if (! is_state_right(3))
- {
- reset_state()
- next
- }
- sub(/.*正式通知 接收时间:/, "", $0)
- receive = $0
- save_record()
- }
- END {
- print_records()
- }
- function change_state() {
- state = (state + 1) % 4
- }
- function is_state_right(dest) {
- if (state == dest)
- {
- return 1
- }
- return 0
- }
- function reset_state() {
- state = -1
- }
- function save_record()
- {
- ++id_index[id]
- if (id_index[id] > 1)
- return
- records[id,"occur"] = occur
- records[id,"found"] = found
- records[id,"receive"] = receive
- }
- function print_records() {
- for (id in id_index)
- {
- print "故障总数:" id_index[id]
- print "故障id:" id
- print "发生时间:" records[id,"occur"]
- print "发现时间:" records[id,"found"]
- print "发送短信时间:" records[id,"receive"]
- print ""
- }
- }
复制代码 |
|