LINUX.ORG.RU

Состоялся релиз ack 3.0.0

 ,


2

1

Состоялся стабильный релиз утилиты ack 3.0.0. ack - это аналог grep'а, но для программистов, который написан на Perl'е.

В новой версии:

  • Новая опция --proximate=N, для упорядочивания результатов поиска по отношению друг к другу.
  • Изменено и улучшено поведение опции -w, которая включает поиск по целым словам. Раньше ack 2.x позволял, чтобы в начале и конце шаблона при опции -w присутствовали небуквенные символы. ack 3.x больше такого не позволяет.
  • Добавлена опция -S как синоним --smart-case. Эта опция задаёт поиск, алгоритм которого зависит от того, какие регистры букв встречаются в шаблоне. Если все буквы в шаблоне маленькие, то поиск будет регистронезависимым, но если в шаблоне есть хотя бы одна большая буква, то поиск будет регистрозависимым.
  • Добавлена опция -I, которая включает регистрозависимый поиск.
  • Время запуска теперь на 30-40% меньше по сравнению с версией 2.22 за счёт удаления неиспользуемой поддержки плагинов.
  • ack теперь по умолчанию поддерживает форматы SVG, Markdown и POD.

Скачать: https://github.com/beyondgrep/ack3/archive/v3.0.0.tar.gz

>>> Подробности

★★★★★

Проверено: jollheef ()

не смотрел что там, но...

|perl -ne 'print if /..../'

всяко же лучше и всегда есть
20 лет пользуюсь, когда не хватает грепа, зависимость есть, брат жив

wd ()
Ответ на: комментарий от gremlin_the_red

Было, через другие опции. А эта опция полезна тем, у кого в конфиге прописана опция --smart-case. Ещё до этого была опция --no-smart-case, которая продолжает работать.

saahriktu ★★★★★ ()

# Global command-line options
и дальше мешок our $opt_*
никогда не понимал такой подход... почему не просто our %opt?
и, просто по секрету, есть getopt

в целом дальше читать не хочу

wd ()

grep для программистов? sed для дизайнеров? awk для стоматологов?

Какой еще греп, им даже синтаксис сложнее брейнфака не берется, не говоря про семантику. Проснись, чувак, 70-е кончились.

anonymous ()
Ответ на: комментарий от theNamelessOne

Плюсую вопрос. Такое надо в шапку выносить.

t184256 ★★★★★ ()
Ответ на: комментарий от kto_tama

Всегда, когда в дистре есть ack. (А других, более мощных типа ripgrep и ag - нет). Внутри git каталога стоит использовать git grep, конечно же.

anonymous ()

Перешел с него на ag примерно год назад

anonymous ()

это аналог grep'а, но для программистов

а grep для домохозяек, что ли? первое место в топе айфона, небось?

buratino ★★★★★ ()
Ответ на: комментарий от Shaman007

Там нет слова «оптимизирован». Это отсылка к авторскому

Designed for programmers with large heterogeneous trees of source code, ack is written purely in portable Perl 5 and takes advantage of the power of Perl's regular expressions.

saahriktu ★★★★★ ()
Ответ на: комментарий от Shaman007

По умолчанию не обрабатывает файлы из .gitignore, скорее всего.

theNamelessOne ★★★★★ ()

Кот побрит под Сержа Танкяна?

anonymous ()
Ответ на: комментарий от anonymous

Бред какой-то. Через snap накати что нужно и готово. А если с этим проблемы, то у тебя скорее всего там вообще busybox. А раз собирать придётся самому, можно не останавливаться на проходных вариантах.

anonymous ()
Ответ на: комментарий от saahriktu

Для программистов - это какой-нибудь ctags или clang-format.

anonymous ()
Ответ на: комментарий от Shaman007

1. It's fast

Ack only searches the stuff that makes sense to search. Perl's regular expressions are highly optimized.

2. It's portable

ack is pure Perl, so it runs on Windows just fine. It has no dependencies other than Perl 5. Installation is a snap.

3. It ignores VCS directories

ack searches recursively by default, while ignoring .git, .svn, CVS and other VCS directories.

Which would you rather type?

$ grep pattern $(find . -type f | grep -v '\.git')

$ ack pattern

4. Better search results

Since ack defaults to only searching source code, you get fewer false positives.

VCS directories, like .git and .svn blib, the Perl build directory backup files like foo~ and #foo# binary files, core dumps, etc

5. Easy filetype specifications

If you have a big project with many different languages combined, it's easy to add --perl to search only Perl files, or use --nohtml to search everything except HTML.

ack's filetype detection means more than just specifying a single file extension.

Which would you rather type?

$ grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .git)

$ ack --perl pattern

Plus, ack does filetype detection that find can't. ack checks the shebang lines of scripts without extensions.

6. Creates lists of files without searching

Since ack can know to search only, say, Ruby files with the --ruby switch, you can also generate a list of files in a tree with the -f switch.

# List all Ruby files in the tree $ ack -f --ruby > all-ruby-files

7. Match highlighting

ack has flexible match highlighting, where you can specify the colors to use in its output.

8. Perl regular expressions

Perl leads the programming world with its regular expressions. ack uses Perl's regular expressions, not a «Perl-compatible» subset.

You can also take advantage of Perl's match variables. For example, to generate a list of all files #included in your C code, use this:

ack --cc '#include\s+<(.*)>' --output '$1' -h

9. Command switches much like GNU grep

If you know GNU grep, you know most of ack's switches, too. Word-only searching with -w, case-insensitive searching with -i, etc

10. «ack» is shorter than «grep» to type

This one is sort of a joke, but sort of not. You spend hours every day searching through source code. ack makes it as quick and easy as possible to do that searching and to remove as much drudgerous typing as possible.

Defaults matter. The less typing you have to do, the better.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

#include\s+<(.*)>

И сходу ошибка в регулярке. Вызывает сомнения в компетентности автора этого поделия.

anonymous ()
Ответ на: комментарий от anonymous

Вызывает сомнения в компетентности автора этого поделия.

Написано на перле, работает в консоли, одобрено саахрикту. О чем еще может мечтать хакер?

anonymous ()
Ответ на: комментарий от anonymous

последний пункт вызывает наибольшие опасения...

anonymous ()

это аналог grep'а, но для программистов

В чём это выражается? NIH?

skvitek ★★ ()
Ответ на: комментарий от saahriktu

ack searches recursively by default, while ignoring .git

Мне нужно искать и там. Как быть?

$ grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .git)

Это было серьёзно сейчас или шутка такая?

ack -f --ruby > all-ruby-files

То есть это ещё и ls для программистов?

7. Match highlighting
8. Perl regular expressions

А вот тут уже снова grep.

10. «ack» is shorter than «grep» to type

Сделать алиас 'a' - будет ещё короче!

skvitek ★★ ()
Ответ на: комментарий от saahriktu

Which would you rather type?

grep pattern $(find . -type f | grep -v '\.git')

ack pattern

Neither, grep --exclude-dir=.git -R . is enough for everyone.

dexpl ★★★★★ ()
Ответ на: комментарий от wd

и, просто по секрету, есть getopt

Что самое смешное, он там используется. Глубоко под капотом.

dexpl ★★★★★ ()

аналог grep'а, но для программистов

Лол, что? А grep - не подходит для программистов? :)

th3m3 ★★★★★ ()
Ответ на: комментарий от LINUX-ORG-RU

Пока дойдёт до всяких дебианов дойдёт, будет 2k21. Потому приходится компенсировать.

anonymous ()

интересно, эта буковка U в ASCII-арте кота символизирует хвост, язык или пенис?

Harald ★★★★★ ()
Ответ на: комментарий от saahriktu

Не всем нужно всё там перечисленное.

anonymous ()

Если я правильно понимаю, то это «аналог» the silver searcher, который многопоточный и работает очень быстро.

andreyu ★★★★★ ()
Ответ на: комментарий от anonymous

Хз я давно перешел на ripgrep потому что он очень быстрый

А как он в сравнении с the silver searcher?

andreyu ★★★★★ ()
Ответ на: комментарий от theNamelessOne

У него есть опция --passthru. Пропускает все строки, а не только совпавшие. Полезно, когда хочется какое-то слово подсветить, но не выкидывать при этом все не совпавшие строки, как это делает grep.

i-rinat ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.