PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : egrep regexp Problem



tr0nix
03.12.2003, 11:43
Salute

Ich muss mit egrep etwas matchen lassen, was mit a oder f beginnt und anschliessend eine 6 stellige Zahl hat.

Bsp:
a378570

Die Regexp welche ich bisher habe ist folgende:
egrep '^(a|f)[0-9]+$'

Diese ist allerdings ziemlich ungenau. Aber diese hier geht nicht:
egrep '^(a|f)[0-9]{6}$'

Was ist daran falsch? {6} sollte doch bedeuten, dass sich [0-9] 6 mal matchen lassen sollte?!

Gruss & danke fuer Hilfe
Joel

caba
03.12.2003, 11:54
^[af][0-9]{6,}

sollte machen was du willst...

tr0nix
03.12.2003, 12:58
Nein geht nicht. Das wuerde sowieso alles was min. 6 Zeichen hat nehmen.. {6,6} geht auch nicht...

Steve
03.12.2003, 13:55
egrep '^(a|f)[0-9]{6}$'


bei mir funktioniert das so.

caba
03.12.2003, 14:13
warum geht mein code nicht? Natürlich geht der, zumindest bei mir ....


^[af]

Nimmt alles was mit a oder f anfängt


[0-9]
alle zahlen zwischen 0 und 9


{6,}

mindestens 6 Zahlen



oder verstehe ich was falsch?


meep: ok sorry, habs geblickt...

tr0nix
03.12.2003, 15:51
Also beim Solaris egrep geht das nicht...


a378570@se12do6% echo a378570 | egrep '^(a|f)[0-9]{6}$'
a378570@se12do6%


Aber Solaris ist hald auch nicht mit GNU-egrep...

Auf Linux gehts bei mir auch (habs nur nicht dort getestet)


a378570:bofh:~$ echo a378570 | egrep '^(a|f)[0-9]{6}$'
a378570


F*CK! Ich mach noch alles richtig und das ist der Dank :( scheiss Solaris grmpfl.. danke trotzdem...

caba
03.12.2003, 16:21
Solltest dir was ordentliches zulegen %)

Wie wärs mit FreeBSD?

tr0nix
03.12.2003, 16:25
Naja, ich hab diese paar Sun E10k Server hier im Geschaeft nicht gekauft.

Steve
03.12.2003, 16:49
können die Server perl? Dann kannste


perl -ne 'print if /^(a|f)[0-9]{6}$/;' file

machen

rup
03.12.2003, 16:54
Mein Beitrag war leider total falsch :(