Biorąc pod uwagę datę i godzinę w formacie, który nie jest rozpoznawany przez date
, jak mogę date
rozpoznać datę i godzinę?
Na przykład:
$ 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
Czy --magic-option
istnieje Jeśli nie, to czy istnieje bardziej elegancki sposób na rozwiązanie tego problemu niż użycie sed
transformacji danych wejściowych w dobrze uformowany ciąg daty?
Odpowiedzi:
Nie ma daty POSIX ani GNU
--magic-option
. FreeBSD nazywa to-f
(ze składnią podobną dodate
specyfikatorów formatu wyjściowego, a nie tą, którą proponujesz).Twoja data jest bardzo bliska rozpoznania przez datę GNU: wystarczy zastąpić dwukropek oddzielający datę od czasu spacją.
źródło
01/02/03
.Napisałem kilka narzędzi ( dateutils ), które radzą sobie z datami i godzinami w sposób bardziej przyjazny skryptom . Twoja magiczna opcja to
--input-format|-i
np .:Chociaż
dconv
nie obsługuje bezpośredniodate
formatu wyjściowego (nie nadaje sięTZ
ani niczego w środowisku),strptime
w dateutils znajduje się narzędzie, które obsługuje specyfikator%Z
formatu.źródło