• Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick
  • November - das bedeutet oftmals Herbstblues, grauer Himmel, Tristesse und Wetter, bei dem man gern im Warmen bleibt. Aber nur oftmals! Wir fordern Euch gern auf, gegen den Herbstblues anzukämpfen und hoffen, dabei hilft Euch unser aktuelles Monatsthema. Neugierig geworden? --> Zum Mitmachen bitte hier klicken

regulären Ausdruck an einem bestimmten Muster etwas hinzufügen

joon

Grahams Jubiläumsapfel
Registriert
17.06.07
Beiträge
106
Hallo Forum,

ich habe folgende Zeilen (ein paar Hundert davon), die nach folgendem Schema aufgebaut sind:
Code:
1337-8171-1798-000000094;7;1798-07;T
1337-8171-1798-000000096;7;1798-07;T
1337-8171-1798-000000097;8;1798-08;T
1337-8171-1798-000000098;8;1798-08;T

Ich möchte dass nach dem zweiten Semikolon das "1798-xx" (wobei xx zwei Ziffern sind) die Zeichenfolge "-01" drangehängt wird.

Also es sollte ungefähr so aussehen:
Code:
1337-8171-1798-000000094;7;1798-07-01;T
1337-8171-1798-000000096;7;1798-07-01;T
1337-8171-1798-000000097;8;1798-08-01;T
1337-8171-1798-000000098;8;1798-08-01;T

Ich krieg das mit den regulären Ausdrücken nicht hin...

Vielen Dank!
 
Beispiel fuer Ruby:
Code:
irb(main):001:0> "1337-8171-1798-000000094;7;1798-07;T".gsub(/(;\w)$/,"-01\\1")
=> "1337-8171-1798-000000094;7;1798-07-01;T"

Das Pattern ist: /(;\w)$/
Du benoetigt eine Funktion, die dir das ersetzen ermoeglicht.
In meinem Fall war das gsub. Dort setzt du dein -01 vor die Backreference \1
und das sollte es gewesen sein.


Viel Erfolg.
 
Oder wenn du es direkt in vi ändern möchtest:

Code:
:%s/;1798-\([0-9][0-9]\);/;1798-\1-1;/g

Oder allgemeiner einfach vor das dritte Semikolon -1 schreiben:

Code:
:%s/\(;.*;.*\);/\1-1;/g
 
Auch da kann man sich kuerzer fassen ;)
Code:
:%s/\(;\w$\)/-01\1/g
 
Hallo ihr beiden,

vielen Dank für die Tips!!!