Page 1 of 1

grep textfile.txt -> nur Zahlen ausgeben

Posted: 2003-12-07 19:56
by arachon
Hallo,

ich habe folgendes Textfile (mit Telefonnummern & Teilnehmern):
00123456789 # Franz Müller
014565656 # Max Mustermann
+4930123456 # Berlin AG
+1+12345678 # fehlerhafter Eintrag
$12345678 # fehlerhafter Eintrag
++491234545 # fehlerhafter Eintrag
und möchte dieses mittels "cat" ausgeben, sodass nur Zeilen, die mit einer Zahl oder einem anführenden "+"-Zeichen und einer nachfolgenden Zahl beginnen, ausgegeben werden.

Ausgegeben werden soll jedoch nur die Telefonnummer selbst:
00123456789
014565656
+4930123456
man grep, sed und cut habe ich jetzt durch :wink: , ohne jedoch auf das richtige Ergebnis zu kommen - habt Ihr da vielleicht einen Tip ?


Danke,
Christoph

Re: grep textfile.txt -> nur Zahlen ausgeben

Posted: 2003-12-07 20:03
by captaincrunch

Code: Select all

egrep ^[:digit:] /pfad/zum/file | cut -d " " -f 1
egrep ^+[:digit:] /pfad/zum/file | cut -d " " -f 1
Alles weitere verrät dir man 7 regex

Re: grep textfile.txt -> nur Zahlen ausgeben

Posted: 2003-12-07 20:44
by arachon
Hallo,

danke für die prompte Antwort - leider funktioniert dies bei mir nicht.


Ein:

Code: Select all

egrep ^[:digit:] test.txt | cut -d " " -f 1
lieferte leider überhaupt kein Ergebnis.


Hmm, werde mich da nochmals etwas vertiefen müssen...
Die regexp [:digit:] hatte ich bereits ausprobiert - allerdings war das Ergebnis ebenfalls nicht korrekt.

Habe ich z.B. folgendes File:
01234565656
01232323232 # test
01232323555
erhalte ich bei

Code: Select all

egrep [:digit:] test.txt
als Ergebnis nur eine Zeile:
01232323232 # test
-> Sollten da nicht alle drei Zeilen ausgegeben werden ? Immerhin kommen in allen drei Zeilen Zahlen vor...


Die man für regexp hatte ich mir extra unter http://www.gnu.org/manual/grep-2.4/html ... .html#SEC7 durchgelesen (man 7 regexp gibt es auf meiner Kiste nicht)...


Eventuell weitere hints ?


Danke,
Christoph

Re: grep textfile.txt -> nur Zahlen ausgeben

Posted: 2003-12-07 21:21
by olaf.dietsche
Versuche es mal mit

Code: Select all

awk '/^[0-9+][0-9]* / { print $1; }' datei

Re: grep textfile.txt -> nur Zahlen ausgeben

Posted: 2003-12-07 21:32
by arachon
Perfekt !

Ein

Code: Select all

awk '/^[0-9+][0-9]* / { print $1; }'
(ohne Leerzeichen nach dem *) gibt nun auch alle Zeilen aus, in denen (fehlerhaft) kein Teilnehmer enthalten ist. Genau das habe ich gesucht !


Danke !

Grüsse
Christoph