Ack поиск буквенных строк [закрыто]

15

Я устал от необходимости избегать вещей, когда я хочу найти часть HTML-тега.

Как я могу найти именно то, что я печатаю, не убегая?

например

ack-grep 'console.log(foo'

Я получил:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
тестер
источник
Использовать другую оболочку? Поместите это в кавычки? Поместите строку поиска в файл, я подозреваю, что ack-grep может получить строку из файла. Возможно, вы даже можете получить поиск через стандартный ввод.
Zoredache
@Zoredache Я добавил лучший пример ... Я не хочу убегать (... и что вы подразумеваете под лучшей оболочкой?
тестер
Я имею в виду, что все персонажи, на которых вы жалуетесь, обрабатываются вашей оболочкой (bash / zsh / что угодно). Проблема не имеет ничего общего с инструментом. Проблема в том, что оболочка не отправляет то, что вы печатаете.
Zoredache
Ах, я думаю, что нашел это .. -Q использует это буквально ..
Тестер

Ответы:

18

Вы должны избежать регулярного выражения.

ack 'console\.log\(foo'

(Вы должны избегать, .чтобы вы не соответствовали "consoleflog", потому что .соответствует любому отдельному символу)

И если вы не хотите этого делать, сделайте это, чтобы автоматически указывать каждый метасимвол.

ack -Q 'console.log(foo'
Энди Лестер
источник
2
\ Q не работает на моем сервере. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Себастьян
Я ошибся в \Qпримере и удалил его из ответа. Спасибо, @ Себастьян.
Энди Лестер