Supportnet / Forum / Linux
Unix "date" Ausgabe umwandeln.
Frage
Hallo,
ich habe folgendes Problem / Aufgabenstellung.
Ich habe in einer DAtei folgende "date" Ausgabe:
"Sat Nov 25 23:10:02"
Diese Ausgabe muß ich herausgrepen und in folgendes Format Umwandeln.
20061125231002.
Evtl. mir arays aus awk oder sed ?! Aber ich komme nicht weiter.
Ich bin über jede Idee dankbar.
MFG
Thomas
Antwort 1 von Supermax
Der date-Befehl kann das gewünschte Format selbst ausgeben. Tipp mal
man date ein, um die Formatierungsanweisungen angezeigt zu bekommen.Antwort 2 von ijones
..Danke für die Antwort.
Aber man date kenne ich.
Ich habe eine Logdatei, in der das Datum aber schon so "Sat Nov 25 23:10:02" drin steht. Daran kann ich nichts ändern!
Ich muss jedoch den Zeitstempel weiter verarbeiten. und Damit in ein anderes Format konvertieren.
Hier liegt die Herausforderung.
Aber man date kenne ich.
Ich habe eine Logdatei, in der das Datum aber schon so "Sat Nov 25 23:10:02" drin steht. Daran kann ich nichts ändern!
Ich muss jedoch den Zeitstempel weiter verarbeiten. und Damit in ein anderes Format konvertieren.
Hier liegt die Herausforderung.
Antwort 3 von bored
Ausgabe von date:
Der sed-Befehl funktioniert SO nur bei deutscher Systemeinstellung (siehe date-Ausgabe). Für dein englisches System musst du die Monate noch anpassen. Ich glaube außerdem nicht, dass das die "hübscheste" Lösung ist, aber zumindest bei mir funktioniert´s ;-)
Hach, das hat Spaß gemacht, ich LIEBE diese völlig bekloppten Backslash-Klammer-Verschachtelungen :-D
mfg bored
Mi 6. Dez 20:39:41 CET 2006Der sed-Befehl funktioniert SO nur bei deutscher Systemeinstellung (siehe date-Ausgabe). Für dein englisches System musst du die Monate noch anpassen. Ich glaube außerdem nicht, dass das die "hübscheste" Lösung ist, aber zumindest bei mir funktioniert´s ;-)
less log.txt | sed -e "s/.* \(.*\)\. \(.*\) \(.*\):\(.*\):\(.*\) .* \(.*\)/\6\2\1\3\4\5/" | sed -e "s/Jan/01/" -e "s/Feb/02/" -e "s/Mar/03/" -e "s/Apr/04/" -e "s/Mai/05/" -e "s/Jun/06/" -e "s/Jul/07/" -e "s/Aug/08/" -e "s/Sep/09/" -e "s/Okt/10/" -e "s/Nov/11/" -e "s/Dez/12/" > dates_from_log.txtHach, das hat Spaß gemacht, ich LIEBE diese völlig bekloppten Backslash-Klammer-Verschachtelungen :-D
mfg bored
Antwort 4 von bored
Oh, Nachtrag:
Ich habe jetzt ausschließlich (!) den date-Befehl betrachtet. Wenn hinter dem Datum im Log noch mehr steht, was bei Logs so üblich ist, dann würde das unerwünschterweise mit in der Ausgabe landen. Um das zu umgehen, musst du hinter das letzte "
Ich habe jetzt ausschließlich (!) den date-Befehl betrachtet. Wenn hinter dem Datum im Log noch mehr steht, was bei Logs so üblich ist, dann würde das unerwünschterweise mit in der Ausgabe landen. Um das zu umgehen, musst du hinter das letzte "
\(.*\)" noch das Trennzeichen (z.B. Leerzeichen, oder was auch immer) einsetzen, das in der Logdatei drin steht.
