Nachhilfe in regulären Ausdrücken gesucht.

Post Reply
Message
Author
User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

Nachhilfe in regulären Ausdrücken gesucht.

#1 Post by Lateralus »

Ich würde gerne mit grep eine Datei nach regulären Ausdrücken durchsuchen, die Versionsnummern von Programmen darstellen. Zeilen mit diesen Zeichenketten sollen z.B. gefunden werden:

Code: Select all

programm-0.1.1d
programm-0.1
programm-1.5.6a
Nun dachte ich, dass der Befehl dafür, so aussehen muss:

Code: Select all

grep -e "programm-&#91;0123456789&#93;+&#91;&#91;.&#93;&#91;0123456789&#93;+&#93;*&#91;abcdefghijklmnopqrstuvwxyz&#93;?" <datei>
Aber ich bekomme die Fehlermeldung "Unmatched [ or [^" und damit kann ich nicht viel anfangen, außer, dass anscheinend die Verschachtung der eckigen Klammern nicht richtig ist - aber wie mache ich das sonst?

PDA

#2 Post by PDA »

Spannender ist die Frage was es nicht finden darf.
Ich mache es einfach mal so da ich ja nicht genau weiß wie eine solche Datei aussehen kann.

programm-NUMMER PUNKT NUMMER danach egal

Code: Select all

programm-&#91;&#91;&#58;digit&#58;&#93;&#93;&#91;.&#93;&#91;&#91;&#58;digit&#58;&#93;&#93;
Findet (Beispiel)

Code: Select all

programm-0.1.1d
programm-0.1
programm-1.5_patch
programm-6.3r
Findet nicht (Beispiel)

Code: Select all

programm-6.z
programm-9
programm-5..

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#3 Post by Janka »

[] ist keine Klammerebene, sondern eine Syntax für Zeichenklasse. Die kannst du nicht verschachteln! Wenn du schachteln willst, musst du die gewöhnlichen Klammern verwenden. Außerdem musst du Punkte maskieren.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

User avatar
hastifranki
Posts: 259
Joined: 06. May 2006 19:58

#4 Post by hastifranki »

Hallo,

ich bin auf folgenden Befehl gekommen:

Code: Select all

grep -E "programm-&#91;0-9&#93;\.&#91;0-9&#93;&#40;\.&#91;0-9&#93;&#91;a-z&#93;&#41;?$" <datei>
Viele Grüße
Frank

Post Reply