[Trennmuster] Nachhilfe in regex

Werner LEMBERG wl at gnu.org
Sa Sep 28 20:49:47 CEST 2013


> Also ich habe es mit dem Holzhammer gelöst, indem ich einen
> Ersetzungsbefehl mehrfach anwende:

Das ist nicht der Holzhammer, sonder meiner Meinung nach die richtige
Methode.

> /---pre2wl---
> | ed -s --verbose <Datei> <<!
> | 1,$ s/^.*$/&;&/g
> | 1,$ s/[-=·\.\|]\+\(.*;\)/\1/g
> | 1,$ s/[-=·\.\|]\+\(.*;\)/\1/g
> | 1,$ s/[-=·\.\|]\+\(.*;\)/\1/g
> | 1,$ s/[-=·\.\|]\+\(.*;\)/\1/g
> | 1,$ s/[-=·\.\|]\+\(.*;\)/\1/g
> | w
> | q
> | !
> \--------------

Mit sed geht es ein klein wenig eleganter.  Speichere die nächsten
vier Zeilen in »p.sed«:

h
s/[-=·.|]//g
G
s/\n/;/

Der Aufruf

  sed -f p.sed < Eingabe > Ausgabe

macht dann das, was Du gerne hättest.  Der Befehl »h« kopiert die
momentane Zeile in einen Zwischenspeicher.  »s« entfernt die
Sonderzeichen, »G« hängt \n an die momentane Zeile an, gefolgt von den
Daten im Zwischenspeicher.  Und der zweite »s«-Befehl ersetzt \n durch
»;«.


    Werner


Mehr Informationen über die Mailingliste Trennmuster