Wie Jahr/Monat/Tag aus "date" extrahieren?

ww

Well-Known Member
Männer!

Ich finde nicht die Lösung, aus der Shellvariablen "date" das Jahr, den Monat und den Tag zu extrahieren. Was ich brauche ist eine Funktion wie substr() in PHP.

Kann mir da jemand helfen?

Danke,
Wolfgang
 
Eine date-Variable ist mir neu. Wie sieht denn der Inhalt dieser Variablen aus? Normalerweise kann man da bequem mit cut(1) rangehen.
 
oehm...

zusaetzlich zu troll koenntest du theoretisch auch noch mit awk rumsauen...
keine ahnung WAS du genau vorhast...
hier also noch ein paar beispiele:
Code:
dettus@kuehlschrank:[~]uname -a
OpenBSD kuehlschrank.deep.space 3.7 GENERIC#50 i386
dettus@kuehlschrank:[~]date
Mon Aug 22 21:55:54 CEST 2005
dettus@kuehlschrank:[~]date | awk -F" " '{ print $6" "$2" "$3 }' -
2005 Aug 22
dettus@kuehlschrank:[~]date +"%y %m %d"
05 08 22
dettus@kuehlschrank:[~]date +"%y %b %d"
05 Aug 22
dettus@kuehlschrank:[~]date +"%y %b %d, %a"
05 Aug 22, Mon
dettus@kuehlschrank:[~]date +"%Y %b %d, %a"
2005 Aug 22, Mon
 
@troll: Das isses ;-)

Vielen Dank an alle,
W.

P.S.: Was ich wollte, war eine Backupdatei so zu benennen: backup.20050822
 
ww schrieb:
P.S.: Was ich wollte, war eine Backupdatei so zu benennen: backup.20050822
Tipp, nutze einen Unix Timestamp, oder eine Kombination aus Timestamp und Datum:
Code:
date -u +%s.%Y-%m-%u
Der Teil vor dem Punkt ist Maschinenlesbar, was Vorteile hat.

CU

Martin
 
ww schrieb:
Shellvariablen "date"
date(1) ist aber alles andere als eine Shellvariable...

Im Zusammenhang mit date(1) ist auch strftime(3) interessant. (Dieser Hinweis ist für Leute, die Manpages nicht bis zum Ende durchlesen.)
 
Passt hier jetzt vielleicht nicht direkt zum Problem rein, aber weil ich es schon oft brauchte und es eigentlich ganz nützlich ist, will ich es mal erwähnen: man kann mit dem date von FreeBSD (und dem von anderen BSD-Varianten wahrscheinlich auch) ein Datum in einem bestimmten Format in ein anderes Format umwandeln, z.B. die Eingabe lautet

2005-08-23 00h 36m 17s

und ausgegeben werden soll:

Tuesday August 1124750177

Der Befehl lautet dann:
Code:
date -jf "[I]<eingabeformat>[/I]" "[I]<eingabezeichenfolge>[/I]" +"[I]<ausgabeformat>[/I]"
Konkret für das Beispiel also:
Code:
date -jf "%Y-%m-%d %Hh %Mm %Ss" "2005-08-23 00h 36m 17s" +"%A %B %s"
Die Buchstaben für die Formatangabe sind alle in strftime(3) aufgelistet und erklärt.

Man sollte damit aber vorsichtig sein, wenn das Skript auch auf einem anderen System laufen soll. Das date, das bei den meisten Linux-Distributionen mitgeliefert wird, kennt diese Art der Verwendung nicht.

Björn
 
Zurück
Oben