grep OR und AND

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Steppengewächs, 31.10.2008.

  1. #1 Steppengewächs, 31.10.2008
    Steppengewächs

    Steppengewächs Jungspund

    Dabei seit:
    12.08.2007
    Beiträge:
    24
    Zustimmungen:
    0
    Ort:
    .at
    Hallo Leute!

    Ich benötige wieder mal ein kleine Hilfe bei einem Befehl! :hilfe2:

    Und zwar rede ich nicht lange um den heißen Brei herum, derzeit habe ich diesen Befehl hier:

    Code:
    egrep "Oct.*Syntax error" * -R
    Liefert mir dann alle Zeilen mit "Oct" UND "Syntax error", ich möchte nun alle Einträge mit "Aug" ODER "Oct" UND "Syntax error" finden, ein OR mache ich bei grep ja normal mit Pipe | ich hab jetzt folgendes versucht:

    Code:
    egrep "(Aug|Oct).*Syntax error" * -R
    egrep "[Aug|Oct].*Syntax error" * -R
    egrep "Aug|Oct.*Syntax error" * -R
    Klappt aber leider alles nicht. :headup:
    Hat von euch jemand einen Tipp für mich wie ich das realisieren kann?

    Danke!!!

    schönes Wochenende Jungs und Mädels!
     
  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 slackfan, 31.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Vielleicht

    Code:
    egrep "[Aug*|Oct*].*Syntax error" * -R
    cu
     
  4. #3 Steppengewächs, 31.10.2008
    Steppengewächs

    Steppengewächs Jungspund

    Dabei seit:
    12.08.2007
    Beiträge:
    24
    Zustimmungen:
    0
    Ort:
    .at
    Ein zweites mal das du mir hilfst! :) thx

    Aber leider kriege ich hier alle Einträge in denen "Syntax error" vorkommt, auch die Einträge in denen kein "Aug" oder "Oct" vorkommt, sprich auch die vom Juli.
     
  5. #4 slackfan, 31.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Echt? Bei mir nicht. Gib mal einen Auszug.
     
  6. #5 Steppengewächs, 31.10.2008
    Steppengewächs

    Steppengewächs Jungspund

    Dabei seit:
    12.08.2007
    Beiträge:
    24
    Zustimmungen:
    0
    Ort:
    .at
    Meine Datei test.txt:
    Ausgabe:

     
  7. #6 supersucker, 31.10.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Code:
     egrep "(Aug)|(Oct).*Syntax error" test.txt -R
    So geht's.
     
  8. #7 slackfan, 31.10.2008
    Zuletzt bearbeitet: 31.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Ja, stimmt :D

    hatte mir was anderes vorgestellt.

    aber die letztgenannte Zeile funktioniert ebenfalls, zumindest hier :think:

    Code:
    egrep "Aug|Oct.*Syntax error" * -R
    Aug test1 test2 test3 Syntax error
    Oct test1 test2 test3 Syntax error
    cu
     
  9. #8 Steppengewächs, 31.10.2008
    Steppengewächs

    Steppengewächs Jungspund

    Dabei seit:
    12.08.2007
    Beiträge:
    24
    Zustimmungen:
    0
    Ort:
    .at
    Leider nicht :(

    Testdatei:
    Code:
    Jun test1 test2 test3 Syntax error
    Jun alles ruhig
    Jul test1 test2 test3 Syntax error
    Jul alles ruhig
    Aug test1 test2 test3 Syntax error
    Aug alles ruhig
    Oct test1 test2 test3 Syntax error
    Oct alles ruhig
    Nov test1 test2 test3 Syntax error
    Nov alles ruhig
    Dez test1 test2 test3 Syntax error
    Dez alles ruhig
    Ausgabe:

    Code:
    bart:~ # egrep "(Aug)|(Oct).*Syntax error" test.txt -R
    Aug test1 test2 test3 Syntax error
    Aug alles ruhig
    Oct test1 test2 test3 Syntax error
     
  10. #9 supersucker, 31.10.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    FFS,

    jetzt aber:

    Code:
    egrep "((Aug)|(Oct))(.*)Syntax error" fooo -R
    gibt mir:

    Code:
    Aug test1 test2 test3 Syntax error
    Oct test1 test2 test3 Syntax error
    Durch die fehlende Klammerung vorher wurde das OR auf den Rest des Ausdrucks angewandt.

    Merke: Lieber eine Klammer zuviel bei Regexes als eine zuwenig....:)
     
  11. #10 Steppengewächs, 31.10.2008
    Steppengewächs

    Steppengewächs Jungspund

    Dabei seit:
    12.08.2007
    Beiträge:
    24
    Zustimmungen:
    0
    Ort:
    .at
    Super danke, ja jetzt klappt es wunderbar! :D

    Dank dir, wünsch dir ein schönes WE!!
     
  12. #11 Gott_in_schwarz, 31.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    egrep "((Aug)|(Oct))(.*)Syntax error"
    Sollte äquivalent sein mit dem ersten Versuch des Threaderstellers:
    Code:
    egrep "(Aug|Oct).*Syntax error"
    Die Alternation (|) hat eine so niedrige Precendence, dass die Klammern um Aug und Oct überflüssig sind.
    Sprich
    Code:
    /foo|bar/
    entspricht
    Code:
    /(foo)|(bar)/
    und nicht
    Code:
    /fo(o|b)ar/
    Den Sinn Klammer um .* versteh ich sowieso nicht, aber naja..
    Und Slackfan,
    Code:
    [Aug*|Oct*]
    matcht exakt ein Zeichen, das ist eine charclass. Äquivalent¹ zu:
    Code:
    [AOugct*|]
    Last but not least: "dot star" sollte man möglichst nur wenns wirklich nicht anders geht verwenden, weils einfach alles matcht.
    Schönes sinnfreies Rumgerate ansonsten.

    ad 1: ich will irgendwie immer equivalent schreiben. Wahrscheinlich bin ich schon verdenglischt..
     
  13. #12 supersucker, 31.10.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ich finde es übersichtlicher.

    Aber jedem das Seine.
     
  14. #13 Gott_in_schwarz, 31.10.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Ups, sollte natürlich "den Sinn der Klammer um..." heißen.
    Weiter im Text:
    Code:
    $ echo foofa|egrep '(.)(.)\2\1a'
    foofa
    Wie du siehst werden Klammerungen gespeichert. Ein Grund dagegen. Besser lesbar find ichs jetzt auch nicht. Kann man eventuell im Zweifelsfall benutzen, wenn die Precendence nicht völlig klar ist, so könnte man deinen ersten Versuch zur Illustration statt so
    Code:
    (Aug)|(Oct).*Syntax error
    einfach so schreiben:
    Code:
    (Aug)|(Oct.*Syntax error)
    Da würde einem dann auch der Fehler gleich ins Auge fallen. Ansonsten sind Klammern imho nur dafür gut backreferences zu erzeugen oder eine bestimmte (nicht default) precendence zu erzwingen. Aber hast schon recht.
    (Sorry, nicht persönlich nehmen, aber wenn ich den Spruch nur höre...)
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 slackfan, 31.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Das war doch nicht sinnfrei. Es war maximal nicht zweckdienlich. Ich habe nämlich dabei etwas gelernt und genau das ist der einzige Grund, wieso ich mich hier überhaupt herumtreibe. Danke für deine Erörterungen.
     
  17. #15 supersucker, 31.10.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Auch wenn das völlig OT ist:

    Sorry, ebenfalls nicht persönlich nehmen, aber wenn ich deine Antwort so lese, solltest du vielleicht mal recherchieren, woher dieser Spruch eigentlich kommt.

    Aber immer gleich die dicke Nazi-Keule auspacken.......
     
Thema:

grep OR und AND

Die Seite wird geladen...

grep OR und AND - Ähnliche Themen

  1. 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....
  2. 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...
  3. 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...
  4. 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...
  5. Grep bis zum ersten Vorkommen

    Grep bis zum ersten Vorkommen: Hallo Zusammen, ich habe ein kleines Problem. :) Die Ausgangssituation ist folgende: Der String...