Поиск литерала ">\" с помощью ack-grep

Поиск литерала ">\" с помощью ack-grep

Я ищу строки, которые буквально содержат символ «больше» (">"), за которым следует пробел и символ обратной косой черты (\"), т. е. строку с таким содержанием: > \

Я думал, что побег позволит это, и для большего, чем это происходит:

  $ ack-grep "\> "

возвращает строки, содержащие ">".

Но когда я пытаюсь экранировать и обратный слеш, я получаю:

  $ ack-grep "\> \\"

ack-grep: Неверное регулярное выражение '\> \':
Завершающий символ \ в регулярном выражении m/\> /

решение1

Ого, я был так близко... одинарные кавычки:

$ ack-grep '\> \\'

Я понял это после того, как убедился, что мое регулярное выражение соответствует действительности, используя: http://regexpal.com/ и просто случайно получил одинарные кавычки, пытаясь сделать что-то другое.

решение2

Это также работает:

$ ack-grep '> \\'

и то же самое:

$ ack-grep "> \\\\"

Знак «больше» экранировать не нужно.

решение3

Для поиска буквенных строк используйте опцию literal:

ack-grep --literal '> \'

решение4

Обратите внимание, что проблема здесь не в ack, а в кавычках оболочки. У вас возникнет эта проблема с любой программой, в которой вы попытаетесь передать "> \" в качестве аргумента.

Связанный контент