我有一个以这种方式包含许多时间戳的日志文件:
[2010/02/21 11:01:25]
由于日志文件很大,我想使用快速的Ruby摘录,只能看到两个包含时间之间的文本..从11:01..11:59说
使用类似
的内容while line = gets
puts line if line =~/start/ .. line =~ /end/
end
最好的方法是什么?
如果您可以在命令行上显示它是如何完成的,那么奖励积分。
答案 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]