grep verständnisproblem

Diskutiere grep verständnisproblem im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo ich hatte ja lange keine anfängerfragen mehr :P Deswegen hier mal eine zu grep: Ich habe eine Textdatei: Hamburg Aschaffenburg...

  1. #1 tuxlover, 23.07.2010
    Zuletzt bearbeitet: 23.07.2010
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    Hallo ich hatte ja lange keine anfängerfragen mehr :P

    Deswegen hier mal eine zu grep:

    Ich habe eine Textdatei:

    Code:
    Hamburg
    Aschaffenburg
    Osterburg
    Johannesburg
    Rostock
    Bremen
    Berlin
    Stuttgart
    Dresden
    Koeln
    New York
    
    Nun möche ich mir eine Regex basteln die mit __grep__ am Anfang nach A oder D und am Ende die Zeichenfolge en matched. Ich habe gedacht das würde mit folgender Regex funktionieren:

    Code:
    grep ^[BD].$en
    
    und wird dann Dresden und Bremen matchen.

    Stattdessen wird:
    Code:
    Aschaffenburg
    Bremen
    Berlin
    
    gematcht. Wo ist denn hier der Denkfehler oder der Syntaxfehler?

    Danke für euer Hilfe

    matthias aka tuxlover
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 marce, 23.07.2010
    Zuletzt bearbeitet: 23.07.2010
    marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.112
    Zustimmungen:
    9
    der $ sollte denke ich mal an's Ende - er steht ja schließlich für's Zeilenende...

    Dann sollte wohl nach den . noch ein * - weil es ja nicht nur ein Zeichen zwischen dem AD / en stehen wird...

    Ach übrigens - auf Bremen wird er mit A/D am Anfang sicherlich nicht matchen...
     
  4. #3 bytepool, 23.07.2010
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    ich verstehe dein Beispiel nicht ganz, weder Berlin noch Bremen beginnen mit einem A oder D... Wahrscheinlich meinst du [BD]?

    Die Anker ^ und $ stehen allerdings fuer den Zeilenanfang und das Zeilenende, d.h. "$en" macht keinen Sinn, das kann per Definition nicht gehen, es muesste "en$" sein.

    Ausserdem solltest du darauf achten dass das Suchmuster gequotet wird. In deinem ersten Versuch wuerde sonst ja $en durch die vermutlich leere Variable en ersetzt.

    Ein alias den ich mit grep gerne benutze ist der hier:
    Code:
    alias grep='grep --color'
    
    Dadurch zeigt dir grep die "gematchten" Teile farbig an.

    Vermutlich suchst du diesen Ausdruck:
    Code:
    grep '^[BD].*en$'
    
    mfg,
    bytepool
     
  5. #4 tuxlover, 23.07.2010
    Zuletzt bearbeitet: 23.07.2010
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    hi bitepool,

    irgendwie habe ich gehofft dass du mir da weiterhelfen kannst. danke :)

    das hat geklappt. und das mit --color hat ich schon herausgefunden und den alias auch schon gesetzt. danke trotzdem ;)

    Ja und natürlich meinte ich BD. Ich ändere das mal

    grüße matthias aka tuxlover
     
  6. #5 saeckereier, 23.07.2010
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Dann änder das aber auch im Text :-) Du hast da eine Stelle vergessen.
    Besonders wichtig waren die Hinweise mit dem einfachen Anführungszeichen und zum $-Zeichen.

    ^[BD].$en kann keinen Match ergeben, weil nachdem Ende definitionsgemäß kein en mehr kommen kann. In deinem Fall wurde aus $en aber wegen der fehlenden Quotes einfach nichts. Damit blieb nur noch
    ^[BD].. Damit wird jede Zeile gematcht, die am Anfang ein B oder D hat.

    Das nur nochmal zum Verständnis, weils nicht so 100%ig klar war, weiter oben

    EDIT: Übrigens, nach deinem EDIT ist der Eröffnungspost komplett nicht schlüssig, es passt weder deine Beschreibung zum Regex, noch der RegEx zum Suchergebnis.
     
Thema:

grep verständnisproblem

Die Seite wird geladen...

grep verständnisproblem - Ähnliche Themen

  1. grep + regex zum Log parsen

    grep + regex zum Log parsen: Hi zusammen, ich möchte ein Logfile gerne auf eine Stringkombination durchsuchen. D.h. im Log steht sowas wie: 2016-12-20 10:10:43 ETL started :...
  2. Kurztipp: Unerwünschte grep-Ausgaben vermeiden

    Kurztipp: Unerwünschte grep-Ausgaben vermeiden: Selbst aus altbekannten Programmen kann man oft noch einiges mehr herausholen - man muss sich nur einmal gründlich mit ihnen auseinandersetzen....
  3. GNU Grep 2.19 freigegeben

    GNU Grep 2.19 freigegeben: Von dem Textsuchprogramm GNU Grep ist jetzt Version 2.19 erschienen, die um durchschnittlich zehn Prozent schneller als die Vorgängerversion...
  4. KWin 4.90.1 wartet auf Bugreports

    KWin 4.90.1 wartet auf Bugreports: Martin Gräßlin, Maintainer des KDE-Fenstermanagers, hat den Code für KWin/5 als für gut genug befunden, um ihn im erweiterten Kreis testen zu...
  5. grep Ausgabe an ls übergeben

    grep Ausgabe an ls übergeben: Kann ich die Ausgabe von grep (es sind dateinamen des lokalen verzeichnisses) irgendwie gleich weiterpipen zu ls? Also so das ich zu den...