ack-grep: chars escaping

后端 未结 4 656
借酒劲吻你
借酒劲吻你 2021-01-01 13:04

My goal is to find all \"\" occurrences with ack. How can I do that?

ack \"

Doesn\'t work. Please tell me how ca

相关标签:
4条回答
  • 2021-01-01 13:07
    ack -Q "<?="
    

    This is the best solution if you will want to find by simple text.

    (if you need not find by regular expression.)

    0 讨论(0)
  • 2021-01-01 13:20

    Rather than trying to remember which characters have to be escaped, you can use -Q to quote everything that needs to be quoted.

    0 讨论(0)
  • 2021-01-01 13:24

    Since ack uses Perl regular expressions, your problem stems from the fact that in Perl RegEx language, ? is a special character meaning "last match is optional". So what you are grepping for is = preceded by an optional <

    So you need to escape the ? if that's just meant to be a regular character.

    To escape, there are two approaches - either <\?= or <[?]=; some people find the second form of escaping (putting a special character into a character class) more readable than backslash-escape.

    UPDATE As Josh Kelley graciously added in the comment, a third form of escaping is to use the \Q operator which escapes all the following special characters till \E is encountered, as follows: \Q<?=\E

    0 讨论(0)
  • 2021-01-01 13:26
    ack "<\?="
    

    ? is a regex operator, so it needs escaping

    0 讨论(0)
提交回复
热议问题