Я новичок в сценариях оболочки. Суть моего сценария - найти разницу между двумя временными метками с точностью до миллисекунд. У меня есть файл с содержанием отметок времени только как
2012-09-13 15:00:29,290 2012-09-13 15:00:29,297
2012-09-13 15:00:29,428 2012-09-13 15:00:29,447
Таким образом, у меня есть около 30 тыс. Записей, где я не должен сталкиваться с проблемами производительности при выполнении скрипта. Многие факторы, такие как високосный год, месяцы с 31 днем и т. Д., Появляются, когда я пытаюсь написать сценарий для этого.
Может ли кто-нибудь помочь мне в этом, пожалуйста?
text-processing
date
timestamps
Вамши Г
источник
источник
Ответы:
Не нужно делать сложный разбор, свидание сделает всю магию за вас, с помощью своего друга, bash :
ВЫВОД
Увидеть
man date
НОТА
date -d
очень полезно, он конвертирует метки времени%s
время эпохи (в секундах с 01-01-1970)%N
это наносекунды$(( ))
и(( ))
дляbash
арифметики, см. http://mywiki.wooledge.org/ArithmeticExpression$( )
обозначаетcommand substitution
Это также соответствует вашим потребностям?
источник
Язык сценариев, такой как Perl, Python или Ruby, будет быстрым и не потребует особых усилий. Например, с помощью Perl и Date :: Parse :
(Для каждой строки, заменить
,
на.
, разделить строку на слова$_[0]
через$_[3]
, разобрать даты , образованные первых двух и последующих двух слов, и печатать разницу.)источник
Я только что наткнулся на этот пост, есть - по крайней мере, сегодня - более простое
date
решение на основе. Используя фреймворк в ответе @Gilles Quenot (написал бы комментарий к своему ответчику, но недостаточно репутации):Результат:
Использование
%3N
вместо%N
будет обрезать вывод до миллисекунд.источник