Dada una fecha y hora en un formato que no es reconocido por date, ¿cómo puedo llegar datea reconocer la fecha y la hora?
Por ejemplo:
$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep 9 23:58:46 MDT 2012
¿Existe --magic-option? Si no, ¿hay una manera más elegante de resolver esto en lugar de usar sedpara transformar la entrada en una cadena de fecha bien formada?

Respuestas:
Ni POSIX ni GNU tienen fecha
--magic-option. FreeBSD lo llama-f(con una sintaxis similar adatela de los especificadores de formato de salida, no la que usted propone).Su fecha está muy cerca de ser reconocida por la fecha GNU: todo lo que se necesita es reemplazar los dos puntos que separan la fecha del tiempo por un espacio.
fuente
01/02/03.Escribí un montón de herramientas ( dateutils ) que tratan las fechas y horas de una manera más amigable con los scripts. Su opción mágica es
--input-format|-i, por ejemplo:Si bien
dconvno admite directamentedateel formato de salida (no confiereTZni nada en el entorno), hay una herramientastrptimeen dateutils que admite el%Zespecificador de formato.fuente