Я лог-файл в виде, как показано ниже:время Counting в лог-файл
log.txt
Unavailable 06.08.2014 23:59:36 - 07.08.2014 00:00:36
Unavailable 15.08.2014 04:53:32 - 15.08.2014 04:53:32
Available 15.08.2014 04:54:32 - 15.08.2014 05:17:32
Unavailable 15.08.2014 05:18:32 - 15.08.2014 05:18:32
Unavailable 15.08.2014 08:22:00 - 15.08.2014 08:22:00
Available 15.08.2014 08:23:00 - 17.08.2014 01:44:27
Unavailable 17.08.2014 01:45:27 - 17.08.2014 01:52:33
Available 17.08.2014 01:53:33 - 02.09.2014 11:07:21
мне нужно посчитать время недоступности в секундах. Я не какой-либо СЕПГ/AWK гуру так что мой apporach этой проблемы очень просто:
cat log.txt | grep "Unav" | sed -r 's/\<Unavailable\>//g;s/:/ /g;s/\./ /g' |
awk -F- '{d2=mktime($2);d1=mktime($1);print d2-d1;}' | awk '{s+=$1} END {print s}'
Я был удивлен, видя, что, когда дата попадались день (корыто полночь) расчет идет не так. Результат от расчета первой строки показывает, что разница была секунд в EPOCH, поэтому будет Чт 31 декабря 01:01:00 CET 1970. Но результат расчета должен составлять 60 секунд. Может ли кто-нибудь объяснить мне, почему этот результат был возвращен из системы?
Как я уже сказал, я не awk-гуру, но вижу, что вы очень благодарны. – michalp
Поскольку я не мог продвигать ваш комментарий в «ответе, опубликованном от вас, где вы знаете», я делаю это здесь: D – fedorqui