Wie kann man in der CMD-Anwendung Grep nach "" suchen ohne, dass es fehlinterpretiert wird?
Folgende Frage: Versuche hier grade in der CMD-Anwendung Grep aus einigen Dateien bestimmte Zeichenketten oder Wörter herauszufiltern. Das klappt soweit auch ganz gut... Nur bei einer Sache komm ich nicht weiter: Ich muss nach einer Wortzeichenkette suchen, die in der Zeichenkette selbst ein "" enthält. zb. "wort"f" Leider wird das " wohl vom Interpreter selbst als Ende des gesuchten Begriffs interpretiert, weshalb ab dem zweiten " ein Fehler auftritt und auch keine Ausgabedatei erzeugt wird. Hab das Ganze schon versucht mit "\"" oder "?"" versucht zu maskieren. Leider funktioniert auch das nicht oder ich mache hierbei irgendwas falsch...
Hat einer von euch zufällig eine Ahnung wo der Fehler liegt bzw. wie man das behebt?
Also ich muss z.b nach "_Ds202"f3" suchen... Das " zwischen 2"f darf hierbei nicht als Ende des Suchtermes interpretiert werden.
2 Antworten
Mir ist nicht ganz klar, was Du tust: CMD ist MS-DOS pur und hat mit Linux rein gar nichts zu tun.
Unter Unix funktioniert der Backslash als genereller Escape-Character schon immer problemlos. Nur unter MS-DOS klappt es bis heute nicht richtig. Der Interpreter unterstützt Anführungszeichen nur rudimentär, um Dateinamen mit Leerzeichen handzuhaben. Für alles, was darüber hinaus geht, muss jedes Programm sein eigenes Süppchen kochen. Manche verwenden \ oder ^ als Escape-Character, andere doppeln die Anführungszeichen oder ignorieren sie komplett.
Wenn Du Dich unbedingt mit einem 40 Jahre alten Rohrkrepierer quälen willst, musst Du wohl mit auch find/findstr leben.
Ansonsten probier mal:
grep _Ds202\x22f3 .\*
oder
echo _Ds202"f3 >myPattern.grep
grep -f myPattern.grep .\*
$ cat grep_test
something
foo
jkl_Ds202"f3asdf
bar
_Ds202
_Ds202"f3
42
$ grep "_Ds202\"f3" grep_test
jkl_Ds202"f3asdf
_Ds202"f3