Mailinglist Archive: opensuse-de (1512 mails)

< Previous Next >
Re: sed/awk-Hilfe gesucht
Hallo Martin,

Martin Ereth schrieb:
Hallo!

Ich habe eine CSV-Datei (im Folgenden file genannt, Feldtrenner ist der Strichpunkt ";"), in der in der 4. Spalte steht ein Datum im Format TT.MM.JJJJ.

Für einen Datenbankimport brauche ich aber das Datum im Amerikanischen Format, also JJJJ-MM-TT.

Du erzeugst einen regulären Ausdruck mit drei Klammerpaaren und verwendest 'backreferences' /...regex.../\3-\2-\1/p

regex:

TT kann
0 gefolgt von 1-9,
1 gefolgt von 0-9,
2 gefolgt von 0-9 oder
3 gefolgt von 0-1
sein.

also: (0[1-9]|[1-2][0-9]|3[0-1])

MM kann
0 gefolgt von 1-9 oder
1 gefolgt von 0-2
sein.

also : (0[1-9]|1[0-2])

YY kann
158 gefolgt von 3-9,
159 gefolgt von 0-9,
16 gefolgt von 0-9 gefolgt von 0-9,
17 gefolgt von 0-9 gefolgt von 0-9,
18 gefolgt von 0-9 gefolgt von 0-9,
19 gefolgt von 0-9 gefolgt von 0-9,
2 gefolgt von 0-9 gefolgt von 0-9 gefolgt von 0-9
sein.

also (2\d\d\d|1[6-9]\d\d|159[0-9]|158[3-9])

Ergebnis:

/(0[1-9]|[1-2][0-9]|3[0-1]).(0[1-9]|1[0-2]).(2\d\d\d|1[6-9]\d\d|159[0-9]|158[3-9])/\3-\2-\1/p

Ich bin nicht sicher, ob den Klammern bzw. den Punkten ein \ voranstellen mußt. Schau in die man page. Der Punkt soll auf einen literalen Punkt passen (nicht auf jeden Buchstaben). Die Klammern sollen gruppieren.

Fall Du MySQL benutzt, funktioniert vielleicht auch die Datumsfunktion CAST('13.07.2007' AS DATE).

Gruß,

Oliver



--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+unsubscribe@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx

< Previous Next >
References