Я пытаюсь использовать ack-is-лучше-чем-grep (ack) с регулярными выражениями для поиска строк и фрагментов в моем хранилище кода. Насколько я понимаю, ack использует регулярные выражения, производные от Perl , это правильно?
Однако я не уверен, как будут работать эти запросы:
ack 'foo'
ack '.*(foo)+.*'
ack '.*foo'
ack 'foo.*'
Могут ли они дать разные результаты? Если так, то почему?
РЕДАКТИРОВАТЬ: В моих тестах они выдают разные результаты (например, первый выводит больше совпадений, чем другие). Они также выделяют разные части одних и тех же линий.
РЕДАКТИРОВАНИЕ 2: Разница в выходных данных, по-видимому, связана с выделением (окраска выходных данных). Я заметил, что если я запускаю ack
с --nocolor
, вывод команд выше будет таким же. Видимо, выполнение ack
с окраской по умолчанию делает часть вывода невидимой в моей машине / конфиге. Я запускаю его на терминале GNOME из bash в Ubuntu 11.04.