Разбор файла журнала с помощью Ruby с использованием оператора range - PullRequest
1 голос
/ 22 февраля 2010

У меня есть файл журнала, который состоит из множества временных меток следующим образом:

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

, поскольку файлы журнала велики, я хотел бы использовать небольшую выдержку из Ruby, чтобы увидеть только текст между двумя включенными моментами времени, скажем, с 11: 01..11: 59

Используя что-то вроде

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

как лучше это сделать?

бонусных очков, если вы можете показать, как это делается в командной строке.

1 Ответ

1 голос
/ 22 февраля 2010
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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...