Что является наиболее эффективным метод для подсчета, мера (высчитывает) timespans между двумя отметками из логфайла? Я знаю глупое решение в Excel/Numbers/Refine, но я ищу умный awk-oneliner.Что лучший метод для измерения timespans между двумя отметками
Пример: Лифт с автоматической дверной системой работает на n этажах.
лифта открывает дверь: Start Move to Work_position
End Move to Work_position
Start Move to Home_Position End Move to Home_Position
Elevator_021 logger: 2017-02-13 13:11:33.735 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Work_position
Elevator_021 logger: 2017-02-13 13:11:34.800 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Work_position
Elevator_021 logger: 2017-02-13 13:26:12.893 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Home_Position
Elevator_021 logger: 2017-02-13 13:26:13.898 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Home_Position
Elevator_021 logger: 2017-02-13 14:51:03.211 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Work_position
Elevator_021 logger: 2017-02-13 14:51:04.276 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Work_position
Я направляюсь к выходу, как это:
Elevator_021 logger: 2017-02-13 13:11:33.735 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Work_position
Elevator_021 logger: 2017-02-13 13:11:34.800 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Work_position
to Work 1065 ms
Elevator_021 logger: 2017-02-13 13:26:12.893 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Home_Position
Elevator_021 logger: 2017-02-13 13:26:13.898 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Home_Position
to Home 1005 ms
Elevator_021 logger: 2017-02-13 14:51:03.211 [MONITORING] CYL_A1; Floor_12 Door ;Start Move to Work_position
Elevator_021 logger: 2017-02-13 14:51:04.276 [MONITORING] CYL_A1; Floor_12 Door ;End Move to Work_position
to Work 3976 ms
thx! Но, нет! \t awk: синтаксическая ошибка в исходной строке 2 в функции dtime context is x = match ($ 0,/([0-9] {4} - [0-9] {2} - [0-9] {2} \ s [0-9:] +) (\. \t [0-9] +). * ([0-9] {4} - [0-9] {2} - [0-9] { 2} \ s [0-9:] +) (\. [0-9] +). * (To >>> \ w +) _ /, <<< awk: незаконный оператор в исходной строке 2 \t в функции dtime awk: незаконный оператор в исходной строке 2 в Funktion stimme –
Он будет далек от 1 лайнера в POSIX awk, поскольку он не имеет временных функций. Вы можете исследовать с помощью 'date' для преобразования временной метки или использовать Perl или install gawk. – dawg
Он работает - переключается на другую машину OS-X. Но только с «предварительной группировкой» связанных строк - нужна одна пустая строка между связанными парами. –