Guest User

Untitled

a guest
Nov 12th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. grammar SarDisk
  2. {
  3. rule TOP
  4. {
  5. <time> <devname> .*$
  6. }
  7.  
  8. regex time
  9. {
  10. |(\d+) ':' (\d+) ':' (\d+) \s+ ('AM')
  11. |(\d+) ':' (\d+) ':' (\d+) \s+ ('PM')
  12. |(\d+) ':' (\d+) ':' (\d+)
  13. }
  14.  
  15. regex devname
  16. {
  17. "dev" \d+ '-' \d+
  18. }
  19. }
  20.  
  21. class SarDiskActions
  22. {
  23. method time ($/)
  24. {
  25. make self.convert-AM($/) if $/[3] eq 'AM';
  26. make self.convert-PM($/) if $/[3] eq 'PM';
  27. }
  28.  
  29. method convert-AM ($hour)
  30. {
  31. my @time = $hour.split(':');
  32. @time[0] = '00' if @time[0] == 12;
  33. pop @time;
  34. return @time.join(':');
  35. }
  36. method convert-PM ($hour)
  37. {
  38. my @time = $hour.split(':');
  39. @time[0] += 12 if @time[0] != 12;
  40. pop @time;
  41. return @time.join(':');
  42. }
  43. }
  44.  
  45. for './sar30'.IO.lines -> $line
  46. {
  47. my $result = SarDisk.parse($line, :actions(SarDiskActions));
  48. put $result<time>.made ~ ' ' ~ $result<devname> if $result.so;
  49. }
Add Comment
Please, Sign In to add comment