2015-11-14 1 views
5

Моя цель - преобразовать даты из моих журналов apache в формате «12/Ноябрь/2015: 23: 28: 22» в формат epoch. Можно ли это сделать с помощью команды date или мне нужно разобрать и извлечь информацию?Преобразование формата даты в формате apache в эпоху в bash

+0

Это довольно странный формат даты и времени, и ни одна из «дат», которую я попробовал, не могла его проанализировать, хотя ни одна из них не была на CentOS 7, но одна из них была датой GNU, что я бы предположил, что CentOS использует. – blm

+0

Согласен. Хотя это формат моих журналов apache. Я как бы удивлен, дата не имеет способа предоставить дату с пользовательским форматом дата + "% d /% b /% Y:% H:% M:% S" -s "12/Nov/2015: 23: 28: 22 « – user2704766

+0

Да, я знаю все, что нужно разбирать журналы со странным форматом, за которым вы застряли. :-) Я согласен, 'date' позволяет вам указать выходной формат, было бы неплохо, если бы вы могли указать формат ввода. @EricRenouf предлагает хорошее решение ниже, но для того, чтобы вытереть дату в формате 'date', понимает. – blm

ответ

8

Кажется, моя команда date хочет - вместо / между частями даты и разделяемыми пробелом от временной части. Поэтому я использовал sed сделать преобразование типа так:

date -d "$(echo '12/Nov/2015:23:28:22' | sed -e 's,/,-,g' -e 's,:, ,')" +"%s" 
+0

Спасибо, это отлично работает !! – user2704766

0

Вы можете использовать пакет dateutils:

dateutils.strptime -i "%Y%m%dT%H%M%S" -f "%d.%m.%Y %H:%M:%S" "20170411T172238"

где -i ваш входной формат и -f выходной формат