2010-02-22 55 views
1

解析使用Ruby一個日誌文件我有一個由以這種方式許多時間戳的日誌文件:使用範圍操作符

[2010/02/21 11時01分25秒]

因爲日誌文件是大的,我想用一個快速的Ruby摘錄能夠看到只有兩個包容倍之間的文本..從11說:01..11:59

使用類似

while line = gets 
    puts line if line =~/start/ .. line =~ /end/ 
end 

什麼是最好的方式去 關於它?

如果您可以在命令行上顯示它是如何完成的,則可獲得獎勵積分。

回答

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] 
+2

對於讀者來說,使用一小段代碼而不是立即在頁面上運行的單行代碼可能會更友好,就像事情變得有趣一樣。 – Telemachus 2010-02-22 17:26:26