Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Пять инструментов для работы с Grep в Linux

Оригинал: 5 Grep Tools for Linux
Автор: Ivana Isadora Devcic
Дата публикации: 1st Mar 2015
Перевод: Н.Ромоданов
Дата перевода: апрель 2015 г.

Как известно каждому пользователю Linux, команда grep является надежным инструментом командной строки, применяемым для поиска внутри файлов. Тем не менее, многие новички стараются им не пользоваться поскольку им не нравится работа с терминалом. Приложения, представленные в этой статье, не всегда являются альтернативой grep, поскольку в некоторых практических случаях grep действительно незаменим. Поэтому давайте назовем их визуальными апгрейдами grep, т. к. они расширяют функциональные возможности grep и представляют собой обертки вокруг всех этих возможностей с полноценным графическим интерфейсом.

1. Regexxer

Приложение Regexxer является практическим инструментом поиска файлов, который позволяет редактировать файлы непосредственно из интерфейса приложения. Вы можете искать файлы и папки по именам и заглядывать внутрь текстовых файлов (в том числе в файлы HTML и XML). В левой части окна можно выбрать целевой каталог и шаблон поиска (для поиска во всех файлов укажите *, а для поиска только во всех текстовых файлах - * .txt). Regexxer может выполнять рекурсивный поиск во вложенных каталогах любого выбранного каталога и поиск в скрытых файлы.

В правой части окна можно в выбранном файле выполнить операцию «найти и заменить». Здесь вы можете заменить только одно вхождение найденной фразы или автоматически заменить все ее вхождения. Вы также можете заменить выбранную фразу во всех найденных файлах, что удобно при пакетном редактировании.

2. Searchmonkey

Раньше приложение Searchmonkey было очень популярным. В какой-то момент разработки версия для Linux пропала и теперь сайт предлагает новые загрузки только для Windows. Тем не менее, старую версию можно установить из репозиториев почти любого дистрибутива. Удивительно, но она работает прекрасно и очень быстро. Вы можете использовать Searchmonkey для поиска файлов и папок по именам, или просматривать их содержимое и выполнять поиск фраз с использованием регулярных выражений.

Приложение Searchmonkey помогает с помощью мастера File Expression Wizard создавать сложные запросы поиска файлов (активируется нажатием на кнопку Expression Builder) и имеет функцию проверки регулярного выражения Test Regular Expression (в меню Extras). Оно может искать файлы рекурсивно, вы можете указать глубину поиска (в какое количество подкаталогов следует заходить вглубь) и фильтровать файлы по размеру и дате. На вкладке Options (Параметры) вы можете указывать ограничение на количество файлов, используемых для получения результатов, и выбирать, сколько строк контекста вы хотите при этом видеть.

3. DocFetcher

Вместо того, чтобы осуществлять поиск непосредственно в файловой системе, приложение DocFetcher попросит вас создать индекс, а затем будет выполнять ваши запросы только для проиндексированных файлов. Для 32- и 64-разрядных систем предлагается также переносимая версия (просто распакуйте приложение и запустите в терминале файл .sh). Чтобы создать индекс, щелкните правой кнопкой мыши по зоне "Область поиска", которая расположена слева.

Вы можете добавить каталоги в индекс, приостановить создание индекса и продолжить его создание позже, можете проиндексировать архивные файлы (ZIP, TAR) в виде каталогов, а также можете с помощью регулярных выражений исключать выбранные файлы из индекса.

В DocFetcher есть встроенный механизм визуализации HTML, позволяющий просматривать файлы HTML с правильным форматированием и показом изображений. Есть средства, помогающие поддерживать конфиденциальность и сознательно удалять историю поиска. Можно выполнять поиск в файлах с применением универсальных символов и логических операторов, осуществлять нечеткий поиск (находить похожие слова) и поиск с учетом близости слов друг к другу (указывать, на каком расстоянии слова должны быть в тексте близко друг от друга), а также многое другое. В DocFetcher поддерживает впечатляющее количество форматов, в том числе файлы Microsoft и Libre Office (DOC, DOCX, ODT, OTP ...), PDF и EPUB, HTML и XML, файлы электронной почты Outlook PST, а также метаданные для аудиофайлов и изображений.

4. Regain

Приложение Regain является поисковой системой, предназначенной для вашего рабочего стола; что-то вроде Google, но для ваших файлов и каталогов. Оно написано на языке Java, поэтому оно работает на Linux, OS X и на Windows, при условии, что вы правильно установили и настроили среду Java. Инсталляционный файл доступен на вебсайте проекта, и для того, чтобы запустить приложение, вы можете просто распаковать его в каталог, открыть этго в терминале и выполнить команду java -jar regain.jar. (Файл regain.jar должен быть исполняемым). Regain будет работать в вашем веб-браузере, используемом по умолчанию.

Чтобы выполнить поиск в ваших файлах и каталогах, приложение Regain должно сначала поползать по вашей системе и построить поисковый индекс. В форме Preferences (Настройки) можно добавлять каталоги, которые вы хотите индексировать. Если вы не хотите индексировать некоторые файлы, то вы должны указать их в «черном списке», (т. е. как blacklist) в конфигурационном файле CrawlerConfiguration.xml. Когда вы станете пользоваться приложением Regain, то поиск будет происходить по индексному файлу, а не по всему жесткому диску. Это экономит системные ресурсы и делает поиск быстрее.

5. PDFgrep

Из всех инструментов, приведенных в этом списке, приложение PDFgrep является наиболее близким к оригиналу grep, но оно также и «самое необычное», т.к. это инструмент командной строки. В некоторых дистрибутивах приложение PDFgrep уже есть в репозиториях, но самую последнюю версию (в настоящее время это версия 1.3.2) нужно компилировать.

В то время как grep выводит номер строки, в которой находится искомая строка, приложение PDFgrep выдаст вам номер страницы, что более удобно для файлов PDF, поскольку мы, как правило, читаем их, как книги, а не анализируем их строка за строкой. PDFgrep работает только с файлами PDF. Они должны быть либо преобразованы из текста, либо быть построены с помощью алгоритмов распознавания текста, а не созданными из отсканированных изображений.

Чтобы найти слово в файле PDF, наберите следующую команду:

pdfgrep word filename.pdf

Чтобы игнорировать регистр символов (прописные/строчные символы), используйте параметр -i:

pdfgrep -i word filename.pdf

В результате будут найдены слова "Word", "word", "WORD", а также все другие их возможные комбинации. Если вы хотите найти фразу, то укажите ее в кавычках. Также имеются другие параметры:

  • -n: выдача номера страницы для каждого найденного соответствия
  • -c: выдача только общего числа найденных в файле соответствий
  • -p: выдача числа соответствий, найденных на каждой странице
  • -C КОЛИЧЕСТВО: выдача указанного количества символов контекста, окружающего найденное соответствие. Вместо количества символов вы можете указать параметр "line" и PDFgrep выдаст целую строку

Приложение PDFgrep может выполнять рекурсивный поиск во всех подкаталогах заданного каталога, а также осуществлять поиск сразу в более, чем одном файле. Поддерживается использование регулярный выражений, причем все эти возможности можно объединить вместе:

pdfgrep -nH "Linux world" file1.pdf file2.pdf /home/user/Desktop/newfile.pdf

В результате для каждого найденного соответствия будет печататься номер и имя файла (т. к. указан параметр -H)

Какими инструментальными средствами и командами вы пользуетесь при поиске в файлах? Расскажите нам о них в комментариях.