Подтверждение с регулярным выражением - путаница с простыми запросами

Я пытаюсь использовать ack-is-better-than-grep (ack) с регулярными выражениями для поиска строк и фрагментов в моем репозитории кода. Насколько я понимаю, ack использует регулярные выражения, производные от Perl , это правильно?

Однако я не уверен, как будут работать эти запросы:

ack 'foo'
ack '.*(foo)+.*'

ack '.*foo'
ack 'foo.*'

Могут ли они давать разные результаты? Если да, то почему?

РЕДАКТИРОВАТЬ: В моих тестах они выдают разные результаты (например, первый выводит больше совпадений, чем другие). Они также выделяют разные части одних и тех же строк.

РЕДАКТИРОВАТЬ 2: Разница в выводе, по-видимому, связана с выделением (окраской вывода). Я заметил, что если я запустил ack с - nocolor , результаты вышеперечисленных команд будут такими же. Очевидно, запуск ack с цветом по умолчанию делает часть вывода невидимой на моем компьютере / config. Я запускаю его на терминале GNOME из bash в Ubuntu 11.04.

11
задан Amelio Vazquez-Reina 18 July 2011 в 22:04
поделиться