Pesquisando literal "> \" usando o ack-grep

9

Estou procurando linhas que literalmente tenham um caractere maior que (a ">") seguido por um espaço seguido por um caractere de barra invertida (a "\"), ou seja, uma linha com isso:> \

Eu pensei que escapar permitiria isso, e para o maior do que isso:

  $ ack-grep "\>"

retorna linhas que têm ">" nelas.

Mas quando tento escapar da barra invertida, também recebo:

  $ ack-grep "\> \\"

ack-grep: Regex inválido '\> \':
À direita \ no regex m / \> /

Stephen Gornick
fonte

Respostas:

6

Uau, eu estava tão perto ... aspas simples:

$ ack-grep '\> \\'

Descobri isso depois de confirmar que minha correspondência de regex era válida usando: http://regexpal.com/ e aconteceu de ter tido aspas simples ao tentar outra coisa.

Stephen Gornick
fonte
5

Isso também funciona:

$ ack-grep '> \\'

e o mesmo acontece:

$ ack-grep "> \\\\"

O maior que não precisa ser escapado.

Pausado até novo aviso.
fonte
1

Para pesquisar cadeias literais, use a opção literal:

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

Observe que o problema aqui não é com ack, mas com a citação do shell. Você teria esse problema com qualquer programa que estivesse tentando passar "> \" como argumento.

Andy Lester
fonte
Sim, se eu soubesse disso primeiro: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 As regras de ouro do shell Bourne citando Tudo o que pode ser maltratado pelo shell é protegido por aspas simples.
Stephen Gornick