
Ich suche nach Zeilen, die buchstäblich ein Größer-als-Zeichen (ein ">") enthalten, gefolgt von einem Leerzeichen und einem Backslash-Zeichen (ein "\"), also eine Zeile mit folgendem: > \
Ich dachte, dass das durch Escapen möglich wäre, und für das Größer-als-Ding ist es so:
$ ack-grep "\> "
gibt Zeilen zurück, die ein „>“ enthalten.
Aber wenn ich versuche, auch den Backslash zu umgehen, erhalte ich:
$ ack-grep "\> \\"
ack-grep: Ungültiger regulärer Ausdruck '\> \':
Nachgestelltes \ im regulären Ausdruck m/\> /
Antwort1
Wow, ich war so nah dran ... einfache Anführungszeichen:
$ ack-grep '\> \\'
Das habe ich herausgefunden, nachdem ich mit Folgendem bestätigt hatte, dass meine Regex-Übereinstimmung gültig war: http://regexpal.com/ und hatte zufällig einfache Anführungszeichen, weil ich etwas anderes versucht hatte.
Antwort2
Das funktioniert auch:
$ ack-grep '> \\'
und das gilt auch für:
$ ack-grep "> \\\\"
Das Größer-als-Zeichen muss nicht maskiert werden.
Antwort3
Um nach wörtlichen Zeichenfolgen zu suchen, verwenden Sie die Option „literal“:
ack-grep --literal '> \'
Antwort4
Bitte beachten Sie, dass das Problem hier nicht bei ack, sondern bei der Shell-Anführung liegt. Dieses Problem tritt bei jedem Programm auf, bei dem Sie versuchen, "> \" als Argument zu übergeben.