Re: Slightly OT: sed & reguläre ausdruecke - ich peil's nicht
On 18.06.07 22:10:25, Gregor Schneider wrote:
> <version>
> <launcher>1.0.3</launcher>
> <compass>4.2.1</compass>
> <calculation>4.2.4</calculation>
> <externalfunctions>4.2.2</externalfunctions>
> <printhtml>1.0</printhtml>
> <webclient>4.11.10</webclient>
> <webpublisher>1.19</webpublisher>
> </version>
>
> Nun lese ich mir aus der Datei jeweils die Zeile mit dem Modul-Namen
> raus und moechte dann dem Projekt (welches dem Namen entspricht) im
> cvs einen Tag mit der Versionsnummer verpassen.
>
> Idee:
>
> Ich benutze sed und schneide alles vor und nach der Versionsnummer ab,
> leite das in eine Variable um.
Auch wenn ich generell davon abrate regulaere ausdruecke zum parsen von
XML zu benutzen scheint das in diesem Fall einfach genu zu sein (das
XML). Sofern das also wirklich der Inhalt ist, lies weiter, sonst: such
dir nen Parser fuer XML.
> Aber wie kriege ich das hin?
>
> Die regulaeren Ausdruecke sind klar:
>
> ^<[a-z]*> fuer den Ausdruck vor der Versionsnummer
> </[a-z]*>$ fuer den Ausdruck nach der Versionsnummer
Denk dran fuer Ende den / zu escapen.
> Wenn ich jetzt ein
>
> grep compass versions.xml | sed 's/^\<[a-z]\*\>//g'
>
> angebe (also die Sonderzeichen maskiere), bekomme ich die komplette
> Zeile als Ausgabe, gleiches Ergebnis bei
>
> grep compass versions.xml | sed 's/^<[a-z]*>//g'
>
> was mach ich falsch? =8|
Nunja, deine Zeilen beginnen lt. deinem Beispiel oben ja gar nicht mit <
sondern mit whitespace. Also entweder sowas wie 's/[ \t]\+<[a-z]*>//g'
oder ohne das ^, dann bleibt der whitespace aber erhalten.
Andreas
--
You may get an opportunity for advancement today. Watch it!
Reply to: