Buscando literal "> \" usando ack-grep

9

Estoy buscando líneas que literalmente tengan un carácter mayor que (un ">") seguido de un espacio seguido de un carácter de barra diagonal inversa (un "\"), es decir, una línea con esto:> \

Pensé que escapar permitiría esto, y para mayor, que lo que hace:

  $ ack-grep "\>"

devuelve líneas que tienen ">" en ellas.

Pero cuando trato de escapar de la barra invertida también me sale:

  $ ack-grep "\> \\"

ack-grep: regex no válido '\> \':
Trailing \ en regex m / \> /

Stephen Gornick
fuente

Respuestas:

6

Wow, estaba tan cerca ... comillas simples:

$ ack-grep '\> \\'

Descubrí esto después de confirmar que mi coincidencia de expresiones regulares era válida usando: http://regexpal.com/ y resultó que tenía comillas simples al intentar otra cosa.

Stephen Gornick
fuente
5

Esto también funciona:

$ ack-grep '> \\'

y también lo hace:

$ ack-grep "> \\\\"

El mayor que no necesita ser escapado.

Pausado hasta nuevo aviso.
fuente
1

Para buscar cadenas literales, use la opción literal:

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

Tenga en cuenta que el problema aquí no es con ack sino con la cita de shell. Tendría este problema con cualquier programa que intentara pasar en "> \" como argumento.

Andy Lester
fuente
Sí, hubiera sabido esto primero: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Las reglas de oro de Bourne shell citando Todo lo demás que podría ser maltratado por el shell está protegido por comillas simples.
Stephen Gornick