Mailinglist Archive: opensuse-de (1512 mails)
| < Previous | Next > |
Re: sed/awk-Hilfe gesucht
- From: Oliver Block <lists@xxxxxxxxxxxxxxx>
- Date: Fri, 13 Jul 2007 01:33:31 +0200
- Message-id: <4696BA4B.8080900@block-online.eu>
Hallo Martin,
Martin Ereth schrieb:
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
Martin Ereth schrieb:
Hallo!Du erzeugst einen regulären Ausdruck mit drei Klammerpaaren und verwendest 'backreferences' /...regex.../\3-\2-\1/p
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.
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 > |