9

I am looking for lines that literally have a greater than character (a ">") followed by a space followed by a backslash character (a "\") i.e., a line with this: > \

I thought escaping would allow this, and for the greater-than it does:

  $ ack-grep "\> "

returns lines that have "> " in them.

But when I try to escape the backslash as well I get:

  $ ack-grep "\> \\"

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

Dennis Williamson
  • 60,515
  • 14
  • 113
  • 148
Stephen Gornick
  • 261
  • 2
  • 5

4 Answers4

6

Wow, I was so close ... single quotes:

$ ack-grep '\> \\'

Figured this out after confirming that my regex match was valid using: http://regexpal.com/ and just happened to have had single quotes from trying something else.

Dennis Williamson
  • 60,515
  • 14
  • 113
  • 148
Stephen Gornick
  • 261
  • 2
  • 5
5

This also works:

$ ack-grep '> \\'

and so does:

$ ack-grep "> \\\\"

The greater-than doesn't need to be escaped.

Dennis Williamson
  • 60,515
  • 14
  • 113
  • 148
1

To search literal strings, use the literal option:

ack-grep --literal '> \'
Andre Miras
  • 201
  • 2
  • 3
0

Please note that the issue here is not with ack but with the shell quoting. You'd have this problem with any program that you were trying to pass in "> \" as an argument.

Andy Lester
  • 740
  • 5
  • 16
  • Yup, had I known this first: http://www.mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 The golden rules of Bourne shell quoting Everything else that might be maltreated by the shell is protected by single quotes. – Stephen Gornick Jun 01 '10 at 16:00