Suche nach wörtlichem "> \" mit ack-grep

Suche nach wörtlichem "> \" mit ack-grep

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.

verwandte Informationen