Recherche du littéral «> \» à l'aide de ack-grep

9

Je recherche des lignes qui ont littéralement un caractère supérieur à (un ">") suivi d'un espace suivi d'un caractère barre oblique inverse (un "\") c'est-à-dire une ligne avec ceci:> \

Je pensais que s'échapper permettrait cela, et pour le plus grand qu'il ne le fait:

  $ ack-grep "\>"

renvoie des lignes contenant ">".

Mais quand j'essaie également d'échapper à la barre oblique inverse, je reçois:

  $ ack-grep "\> \\"

ack-grep: Regex invalide '\> \':
Trailing \ in regex m / \> /

Stephen Gornick
la source

Réponses:

6

Wow, j'étais si proche ... citations simples:

$ ack-grep '\> \\'

J'ai compris cela après avoir confirmé que ma correspondance d'expressions régulières était valide en utilisant: http://regexpal.com/ et il se trouve que j'ai eu des guillemets simples en essayant autre chose.

Stephen Gornick
la source
5

Cela fonctionne également:

$ ack-grep '> \\'

et il en va de même:

$ ack-grep "> \\\\"

Le plus grand n'a pas besoin d'être échappé.

En pause jusqu'à nouvel ordre.
la source
1

Pour rechercher des chaînes littérales, utilisez l'option littérale:

ack-grep --literal '> \'
Andre Miras
la source
0

Veuillez noter que le problème ici n'est pas avec ack mais avec la citation du shell. Vous auriez ce problème avec n'importe quel programme que vous essayez de passer en argument "> \".

Andy Lester
la source
Ouais, si j'avais su cela en premier: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Les règles d'or du shell Bourne citant tout le reste qui pourrait être maltraité par le shell est protégé par Guillemets simples.
Stephen Gornick