Chinaunix

标题: 文本处理 [打印本页]

作者: mingming_song    时间: 2012-10-29 15:17
标题: 文本处理
本帖最后由 mingming_song 于 2012-10-30 09:52 编辑

1111111111111111
作者: zhaopingzi    时间: 2012-10-29 18:05
我只看到   天上人间

作者: seesea2517    时间: 2012-10-30 09:33
http://xwb.gyyx.cn/
敢情楼主是光宇的呐。
作者: mingming_song    时间: 2012-10-30 09:34
回复 3# seesea2517


    呵呵,是啊,之前shell一直用,后来很长一段时间不用了,真心忘得差不多了
作者: seesea2517    时间: 2012-10-30 09:38
看需要,相当于你是要按照故障的类型做一个汇总吗?
作者: seesea2517    时间: 2012-10-30 10:56
不确定是不是你所要,也不知道结果对不对,你确认一下:
  1. [seesea@UC log]$ awk -f log.awk  duanxin.txt
  2. 故障总数:10
  3. 故障id:463
  4. 发生时间:2012-10-15 08:19
  5. 发现时间:08:04
  6. 发送短信时间:2012-10-15 8:21:35

  7. 故障总数:40
  8. 故障id:454
  9. 发生时间:2012-10-09 13:22
  10. 发现时间:13:22
  11. 发送短信时间:2012-10-9 13:44:15

  12. 故障总数:1
  13. 故障id:456
  14. 发生时间:2012-10-07 20:02
  15. 发现时间:20:02
  16. 发送短信时间:2012-10-10 11:29:04

  17. 故障总数:24
  18. 故障id:466
  19. 发生时间:2012-10-16 23:51
  20. 发现时间:23:46
  21. 发送短信时间:2012-10-16 23:56:25

  22. 故障总数:9
  23. 故障id:460
  24. 发生时间:2012-10-09 21:01
  25. 发现时间:20:47
  26. 发送短信时间:2012-10-9 21:14:43

  27. 故障总数:14
  28. 故障id:451
  29. 发生时间:2012-10-05 12:24
  30. 发现时间:12:30
  31. 发送短信时间:2012-10-5 13:11:19

  32. 故障总数:13
  33. 故障id:452
  34. 发生时间:2012-10-07 03:03
  35. 发现时间:03:10
  36. 发送短信时间:2012-10-7 3:24:28
复制代码
  1. BEGIN {
  2.     state = -1
  3. }

  4. /故障提醒:故障ID为/ {
  5.     change_state()
  6.     if (! is_state_right(0))
  7.     {
  8.         reset_state()
  9.         next
  10.     }

  11.     if (match($0, /[0-9]+/) == 0)
  12.     {
  13.         reset_stat()
  14.         next
  15.     }

  16.     id = substr($0, RSTART, RLENGTH)
  17. }

  18. /^发生:/ {
  19.     change_state()
  20.     if (! is_state_right(1))
  21.     {
  22.         reset_state()
  23.         next
  24.     }

  25.     sub(/发生:/, "", $0)
  26.     occur = $0
  27. }

  28. /^发现:/ {
  29.     change_state()
  30.     if (! is_state_right(2))
  31.     {
  32.         reset_state()
  33.         next
  34.     }

  35.     sub(/发现:/, "", $0)
  36.     found = $0
  37. }

  38. /正式通知 接收时间:/ {
  39.     change_state()
  40.     is_state_right(3)
  41.     if (! is_state_right(3))
  42.     {
  43.         reset_state()
  44.         next
  45.     }

  46.     sub(/.*正式通知 接收时间:/, "", $0)
  47.     receive = $0

  48.     save_record()
  49. }

  50. END {
  51.     print_records()
  52. }

  53. function change_state() {
  54.     state = (state + 1) % 4
  55. }

  56. function is_state_right(dest) {
  57.     if (state == dest)
  58.     {
  59.         return 1
  60.     }

  61.     return 0
  62. }

  63. function reset_state() {
  64.     state = -1
  65. }

  66. function save_record()
  67. {
  68.     ++id_index[id]
  69.     if (id_index[id] > 1)
  70.         return

  71.     records[id,"occur"]   = occur
  72.     records[id,"found"]   = found
  73.     records[id,"receive"] = receive
  74. }

  75. function print_records() {
  76.     for (id in id_index)
  77.     {
  78.         print "故障总数:" id_index[id]
  79.         print "故障id:" id
  80.         print "发生时间:" records[id,"occur"]
  81.         print "发现时间:" records[id,"found"]
  82.         print "发送短信时间:" records[id,"receive"]
  83.         print ""
  84.     }
  85. }
复制代码

作者: seesea2517    时间: 2012-10-30 10:57
我觉得代码已经自解释了,就不多解释哈。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2