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