середу, 10 грудня 2014 р.

Не grep’ом единым

Нашёл интересную замену grep‘у: The Silver Searcher. Команда имеет ряд преимуществ перед grep:
  • работает быстрее (можно почитать объяснение автора по поводу способов ускорения)
  • игнорирует файлы, указанные, например, в .gitignore (можно также использовать и .agignore)
  • также автор пишет: “The command name is 33% shorter than ack“. Ну конечно же имя ag в два раза короче grep
Пример для grep:
grep -r CELERYBEAT_SCHEDULE *
Binary file src/.ropeproject/globalnames matches
Binary file src/worker/.celeryconfig.py.swp matches
src/worker/celeryconfig.py:CELERYBEAT_SCHEDULE = {
src/worker/celeryconfig.py:    CELERYBEAT_SCHEDULE["one_per_hour-daylight-%s" % tz] = {
src/worker/celeryconfig.py:    CELERYBEAT_SCHEDULE["three_per_day-%s" % tz] = {
src/worker/celeryconfig.py:    CELERYBEAT_SCHEDULE["one_per_day-%s" % tz] = {
Binary file src/worker/celeryconfig.pyc matches
src/worker/celeryconfig.py~:CELERYBEAT_SCHEDULE = {
src/worker/celeryconfig.py~:    CELERYBEAT_SCHEDULE["one_per_hour-daylight-%s" % tz] = {
src/worker/celeryconfig.py~:    CELERYBEAT_SCHEDULE["three_per_day-%s" % tz] = {
src/worker/celeryconfig.py~:    CELERYBEAT_SCHEDULE["one_per_day-%s" % tz] = {

Как видим, grep обрабатывает лишние файлы. Конечно, можно указать флаг --exclude, но лень :)
Пример для ag:
ag -r CELERYBEAT_SCHEDULE *
src/worker/celeryconfig.py
78:CELERYBEAT_SCHEDULE = {
105:    CELERYBEAT_SCHEDULE["one_per_hour-daylight-%s" % tz] = {
115:    CELERYBEAT_SCHEDULE["three_per_day-%s" % tz] = {
122:    CELERYBEAT_SCHEDULE["one_per_day-%s" % tz] = {

Результат представлен более приятно (и ускорение работы заметно).
Естественно, есть плагин для Vim.

Немає коментарів:

Дописати коментар