
Я ищу строки, которые буквально содержат символ «больше» (">"), за которым следует пробел и символ обратной косой черты (\"), т. е. строку с таким содержанием: > \
Я думал, что побег позволит это, и для большего, чем это происходит:
$ 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, а в кавычках оболочки. У вас возникнет эта проблема с любой программой, в которой вы попытаетесь передать "> \" в качестве аргумента.