Hallo Forumser allesamt,
ich hab folgendes Problem mit einer Datei, aus welcher ich das Vorhandensein einer Zeichenkette filtern will. Dabei steht entweder
test ODER test-test
in der Datei. Wenn ich nun grep "test-test" suche, findet grep auch die Datei, in welcher nur "test" steht. Das will ich natürlich nicht.
Wie kann man das Problem lösen?
grep Frage - ich frag mal nach
grep Frage - ich frag mal nach
Viele Grüße, ralfi
Niveau sieht von unten oft wie Arroganz aus ...
Niveau sieht von unten oft wie Arroganz aus ...
Re: grep Frage - ich frag mal nach
Das sollte nicht passieren:ralfi hat geschrieben:Wenn ich nun grep "test-test" suche, findet grep auch die Datei, in welcher nur "test" steht. Das will ich natürlich nicht.
Code: Alles auswählen
$ echo test > test.txt
$ cat test.txt
test
$ grep "test-test" test.txt
$
Re: grep Frage - ich frag mal nach
Hatte ich genauso getestet. Selbst die Datei habe ich test.txt genannt. Leider war ich zu spät
Bedenke aber dass "grep" im Gegensatz zu "fgrep" reguläre Ausdrücke verwendet. In deinem Beispiel ist das aber nicht relevant. Poste echte Ausgaben als Code-Blöcke.
Bedenke aber dass "grep" im Gegensatz zu "fgrep" reguläre Ausdrücke verwendet. In deinem Beispiel ist das aber nicht relevant. Poste echte Ausgaben als Code-Blöcke.
Re: grep Frage - ich frag mal nach
Für den umgekehrten Fall, also wenn nur ein "test" aber kein "test-test" gefunden werden soll, ginge dies übrigens so:
Code: Alles auswählen
grep "^test$" *
Re: grep Frage - ich frag mal nach
@4A4B:
Das würde voraussetzen, dass "test" allein in einer Zeile steht. Für mich gibt das die Problembeschreibung nicht her. Ich entnehme daraus nur, dass es Dateien gibt, in denen der String "test", aber nicht der String "test-test" vorkommt.
Eine Zeile könnte z.B. auch so aussehen:
Das würde voraussetzen, dass "test" allein in einer Zeile steht. Für mich gibt das die Problembeschreibung nicht her. Ich entnehme daraus nur, dass es Dateien gibt, in denen der String "test", aber nicht der String "test-test" vorkommt.
Eine Zeile könnte z.B. auch so aussehen:
Code: Alles auswählen
dies ist ein test.
Re: grep Frage - ich frag mal nach
Stimmt, da habe ich nicht genau gelesen .
Man könnte ein zweites grep dahinterschalten, welches Zeilen mit einem String "test-test" wieder herausfiltert:
Man könnte ein zweites grep dahinterschalten, welches Zeilen mit einem String "test-test" wieder herausfiltert:
Code: Alles auswählen
grep "test" * | grep -v "test-test"