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

9

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

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

  $ ack-grep "\>"

возвращает строки, в которых есть «>».

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

  $ ack-grep "\> \\"

ack-grep: Неверное регулярное выражение '\> \':
Конечный \ в регулярном выражении m / \> /

Стивен Горник
источник

Ответы:

6

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

$ ack-grep '\> \\'

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

Стивен Горник
источник
5

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

$ ack-grep '> \\'

и так же:

$ ack-grep "> \\\\"

Больше чем не нужно избегать.

Приостановлено до дальнейшего уведомления.
источник
1

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

ack-grep --literal '> \'
Андре Мирас
источник
0

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

Энди Лестер
источник
Да, если бы я знал это первым: mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html 3.1.11 Золотые правила цитирования оболочки Bourne Все остальное, что может подвергаться жестокому обращению со стороны оболочки, защищено одинарные кавычки.
Стивен Горник