使用范围运算符使用Ruby解析日志文件

时间:2010-02-22 15:48:22

标签: ruby

我有一个以这种方式包含许多时间戳的日志文件:

[2010/02/21 11:01:25]

由于日志文件很大,我想使用快速的Ruby摘录,只能看到两个包含时间之间的文本..从11:01..11:59说

使用类似

的内容
while line = gets
    puts line if line =~/start/ .. line =~ /end/
end

最好的方法是什么?

如果您可以在命令行上显示它是如何完成的,那么

奖励积分。

1 个答案:

答案 0 :(得分:1)

aaa:dev $ cat testdates.txt 
[2010/02/21 11:01:25]
[2010/02/22 11:01:25]
[2010/02/23 11:01:25]
[2010/02/21 12:01:25]
[2010/02/21 11:31:25]
aaa:dev $ cat testdates.txt | ruby -ne "require 'date'; d = DateTime.strptime(\$_.match(/\[(.+?)\]/)[1], '%Y/%m/%d %H:%M:%S'); puts \$_ if d >= DateTime.parse('2010-02-21 11:00') && d <= DateTime.parse('2010-02-21 12:00')"
[2010/02/21 11:01:25]
[2010/02/21 11:31:25]