Mit grep und regulärem Ausdruck zeilen Ausgeben mit bestimmten Zeichenmuster
Dieser Beitrag beschäftigt sich mit einem regulären Ausdruck zum finden bestimmter Zeichenmuster innerhalb einer Datei auf einem Unix-System. Hierzu wird der Befehl grep verwendet
Hallo Admingemeinde,
zur Zeit bin ich in einer Abteilung die sich stark mit Unix und dessen Derivaten beschäftigt. Damit ich Unix Fit gemacht werde soll ich einige Aufgaben lösen was bisher auch ganz gut geklappt hat. Nun bin ich an einer Aufgabe wo weder Manpages, die Kollegen um mich rum oder mehrere Suchanfragen bei meinem Freund Google helfen können. Wir sitzen zu dritt seit Stunden an dieser Aufgabe. Deshalb wende ich mich ich mich hier an dieses Forum. Wie der Titel schon sagt geht es um Zeichenmuster das mit grep und regulärem Ausdruck aus einer Datei gelesen werden soll.
Die Situation und Aufgabenstellung etwas genauer Erörtert:
- Es existiert eine Datei die mit Vornamen gefüllt ist
- 2 Azubis und ein ausgelernter FISI denen nichts mehr einfällt und der jenige ders könnte ist die nächsten 3Wochen nicht da
Die Aufgabe lautet nun die Vornamen auszugeben:
- die das Zeichen "a" und "b" in Groß- Kleinschreibung enthalten
also
z.B A oder B am Anfang und ein "a" und ein"b" irgentwo im weiteren verlauf der Zeile
Barbara oder Abdelbahi wären z.B. solche Strings
Was haben wir z.B versucht:
grep -E "[AB] [ab]" Dateiname
Vieleicht hat hier jemand einen Ausdruck der diese Kriterien erfüllt oder kann uns auf den richtigen Weg bringen.
Danke im voraus und Gruß
FISI-AZUBI2010
Hallo Admingemeinde,
zur Zeit bin ich in einer Abteilung die sich stark mit Unix und dessen Derivaten beschäftigt. Damit ich Unix Fit gemacht werde soll ich einige Aufgaben lösen was bisher auch ganz gut geklappt hat. Nun bin ich an einer Aufgabe wo weder Manpages, die Kollegen um mich rum oder mehrere Suchanfragen bei meinem Freund Google helfen können. Wir sitzen zu dritt seit Stunden an dieser Aufgabe. Deshalb wende ich mich ich mich hier an dieses Forum. Wie der Titel schon sagt geht es um Zeichenmuster das mit grep und regulärem Ausdruck aus einer Datei gelesen werden soll.
Die Situation und Aufgabenstellung etwas genauer Erörtert:
- Es existiert eine Datei die mit Vornamen gefüllt ist
- 2 Azubis und ein ausgelernter FISI denen nichts mehr einfällt und der jenige ders könnte ist die nächsten 3Wochen nicht da
Die Aufgabe lautet nun die Vornamen auszugeben:
- die das Zeichen "a" und "b" in Groß- Kleinschreibung enthalten
also
z.B A oder B am Anfang und ein "a" und ein"b" irgentwo im weiteren verlauf der Zeile
Barbara oder Abdelbahi wären z.B. solche Strings
Was haben wir z.B versucht:
grep -E "[AB] [ab]" Dateiname
Vieleicht hat hier jemand einen Ausdruck der diese Kriterien erfüllt oder kann uns auf den richtigen Weg bringen.
Danke im voraus und Gruß
FISI-AZUBI2010
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114319
Url: https://administrator.de/contentid/114319
Ausgedruckt am: 05.11.2024 um 04:11 Uhr
11 Kommentare
Neuester Kommentar
Es gibt im internet eine ganze Menge Hilfe-Seiten rund um Regular Expressions.
Leider gibt es auch einige verschiedene Dialekte.
Grundsätzlich gibt es die Anker "^" für den Zeilenanfang und "$" fürs Zeilenende.
Der Punkt steht für ein beliebiges Zeichen und der Asterisk * für eine beliebige Anzahl des vorherigen Elements.
Wenn Ihr also pro Zeile nur einen Namen habt, ist das Ganze recht einfach.
Gruß
LotPings
Leider gibt es auch einige verschiedene Dialekte.
Grundsätzlich gibt es die Anker "^" für den Zeilenanfang und "$" fürs Zeilenende.
Der Punkt steht für ein beliebiges Zeichen und der Asterisk * für eine beliebige Anzahl des vorherigen Elements.
Wenn Ihr also pro Zeile nur einen Namen habt, ist das Ganze recht einfach.
Gruß
LotPings
Hallo godie,
dann hat aber das Kaffee trinken zuviel Anteil gehabt
deine RegExp findet z.Bspw nicht den Aaron oder die Bertha.
Immer noch von einem Namen ohne Leerzeichen pro Zeile ausgehend
Aber das haben Die OPs inzwische bestimmt selber herausgefunden.
dann hat aber das Kaffee trinken zuviel Anteil gehabt
deine RegExp findet z.Bspw nicht den Aaron oder die Bertha.
Immer noch von einem Namen ohne Leerzeichen pro Zeile ausgehend
grep -E "^[AB].*[ab].*$" test.txt
Zitat von @FISI-Azubi2010:
ähm Aaron und Bertha entsprechen ebenfalls nicht den Kriterien
da sie "b" im weiteren verlauf der Zeile nicht haben
Es muss am Anfang ein A oder ein B sein und dann im verlauf ein
"a" und ein "b"
ähm Aaron und Bertha entsprechen ebenfalls nicht den Kriterien
da sie "b" im weiteren verlauf der Zeile nicht haben
Es muss am Anfang ein A oder ein B sein und dann im verlauf ein
"a" und ein "b"
Jaja, immer diese Schlauberger die selber nicht richtig lesen können
c:\>type Namensliste.txt
Abraham
Barbara
Abdelbahi
Aaron
Beathe
Bertha
Rainer
Sigismund
Habakuk
c:\>grep -E "^[AB].*((a.*b)|(b.*a)).*$" Namensliste.txt
Abraham
Barbara
Abdelbahi
Bei meinem Grep (WindowsPort) funktioniert das so.
Gruß