Я создаю сценарий Unix bash, который анализирует файл журнала веб-сервера и вставляет эти данные в базу данных. Поэтому мне нужно преобразовать метку времени в формате «05 / Oct / 2010: 07: 38: 40 +0400» в «ГГГГ-мм-дд».
Я пытался использовать / bin / date -d, но он не принимает данный формат. Я не смог найти способ указать формат ввода даты для этого инструмента. Возможно ли это или я должен рассмотреть альтернативное решение?
input_date="05/Oct/2010:07:38:40 +0400" better_date=`echo $input_date | sed -E 's|(..)/(...)/(.{4}).*|\1 \2 \3|'` date -I -d "$better_date"
Вам нужно:
date +%F
Кроме того, похоже, это работает:
date -d "05 Oct 2010 07:38:40 +0400" +%F
Вы должны использовать пробелы в качестве разделителей, а не / или : .