【发布时间】:2015-08-20 09:28:15
【问题描述】:
我正在解析一个日志文件:
2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc
2015-07-15 12:59:39 +0530 [WARNING] index=def
host=def
2015-07-15 12:59:39 +0530 [INFO] index=ghi host=ghi
每个日志都以时间戳开头。
我正在考虑单独解析日志。我想通过时间戳将它们分开并获取,所以我写了一个正则表达式:
text = File.open('logs.txt').read
log = text[/^\d{4}\-\d{2}\-\d{2}(.*?)^\d{4}\-\d{2}\-\d{2}/m, ].to_s
.gsub(/\s/m,' ').strip.split(' ')
puts log #Prints 2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc
但是,这只会获取第一个日志:
2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc
而不是其余的。
- 如何在第一个日志之后继续获取日志?
- 有没有比我的方法更好的方法来处理这个问题?
谢谢。
【问题讨论】:
标签: ruby regex parsing fileparsing