Конвертировать формат даты в Unix (AIX)

У меня есть строка, которая содержит дату в следующем формате:

Ср 13 мая 13:57:00 1992

Мне нужно преобразовать его в строку в следующем формате: yyyyMMddHHmmss

Есть ли функция bultin, которая делает это?

PS мне это нужно для работы на AIX 6.1

1 ответ

Решение

Вот awk Решение, которое должно быть достаточно портативным (отформатировано для удобства чтения):

echo "Wed May 13 13:57:00 1992" | tr ':' ' ' | \
  awk 'BEGIN { months["Jan"] = "01"
               months["Feb"] = "02"
               .....
               months["Dec"] = "12"
             }
             { printf "%s%s%s%s%s%s\n", $7, months[$2], $3, $4, $5, $6 }'

Я бы поставил awk хотя программный код в файле, так что мне нужно было набрать его только один раз, и тогда я мог сделать awk -f convert_date_format.awk вместо...

tr немного не нужно - замена двоеточий (или просто разделение поля времени вокруг них) может быть сделано в awk, но это не так просто, как добавление tr шаг...

Другие вопросы по тегам