Suche nach dem Literal "> \" mit ack-grep

9

Ich suche nach Zeilen, die buchstäblich ein Zeichen größer als (ein ">") haben, gefolgt von einem Leerzeichen, gefolgt von einem Backslash-Zeichen (ein "\"), dh einer Zeile mit diesem:> \

Ich dachte, Flucht würde dies ermöglichen, und für das Größere als es tut:

  $ ack-grep "\>"

Gibt Zeilen mit ">" zurück.

Aber wenn ich auch versuche, dem Backslash zu entkommen, bekomme ich:

  $ ack-grep "\> \\"

ack-grep: Ungültiger regulärer Ausdruck '\> \':
Nachlauf \ im regulären Ausdruck m / \> /

Stephen Gornick
quelle

Antworten:

6

Wow, ich war so nah dran ... einfache Anführungszeichen:

$ ack-grep '\> \\'

Ich habe dies herausgefunden, nachdem ich bestätigt hatte, dass meine Regex-Übereinstimmung mit http://regexpal.com/ gültig war und zufällig einfache Anführungszeichen hatte , weil ich etwas anderes ausprobiert hatte.

Stephen Gornick
quelle
5

Dies funktioniert auch:

$ ack-grep '> \\'

und so auch:

$ ack-grep "> \\\\"

Das Größere als muss nicht entkommen.

Bis auf weiteres angehalten.
quelle
1

Verwenden Sie die Literaloption, um nach Literalzeichenfolgen zu suchen:

ack-grep --literal '> \'
Andre Miras
quelle
0

Bitte beachten Sie, dass das Problem hier nicht mit ack, sondern mit dem Shell-Zitat zusammenhängt. Sie hätten dieses Problem mit jedem Programm, das Sie als Argument "> \" übergeben wollten.

Andy Lester
quelle
Ja, hätte ich das zuerst gewusst : mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Die goldenen Regeln der Bourne-Shell zitieren Alles andere, was von der Shell misshandelt werden könnte, ist geschützt durch Einzelzitate.
Stephen Gornick