Библиотека сайта rus-linux.net
Поиск текста в PDF-документах из командной строки с помощью pdfgrep
Оригинал: How to Search PDF Files from the Terminal with pdfgrep
Автор: Bruno Edoh
Дата публикации: 12 декабря 2017 года
Перевод: А. Кривошей
Дата перевода: февраль 2018 г.
Утилиты командной строки, такие как grep и ack-grep, отлично подходят для поиска паттернов в текстовых файлах с использованием регулярных выражений. Но пытались ли вы когда-нибудь использовать эти утилиты для поиска паттернов в PDF-файлах? Вы не получите никакого результата, поскольку эти утилиты не могут читать файлы PDF, они работают только с текстовыми файлами.
Установка
В Ubuntu и других дистрибутивах на его базе установка очень проста:
$ sudo apt install pdfgrep
В других дистрибутивах просто введите pdfgrep в строке поиска менеджера пакетов, и скорее всего вы его там найдете. Также можете просмотреть
Тестирование
Теперь, когда наш инструмент установлен, давайте перейдем к тестовому прогону. Команда pdfgrep имеет следующий формат:
pdfgrep [OPTION...] PATTERN [FILE...]
OPTION - это список дополнительных атрибутов, например, -i или --ignore-case указывают, что нужно игнорировать регистр в заданном регулярном выражении при сопоставлении его с файлом.
PATTERN - это просто расширенное регулярное выражение.
FILE - это имя файла, если он находится в том же каталоге или путь к файлу.
Я запустил команду на файле официальной документации Python 3.6. Результат на картинке ниже.
Красная подсветка указывает на все места, где встречалось слово «queue». Использование в качестве опции -i обусловило включение в качестве совпадения слова «Queue».
Дополнительные опции
Для pdfgrep имеется целый ряд интересных опций его использования. Я расскажу о некоторых из них.
-c или --count: эта опция подавляет нормальный вывод совпадений. Вместо отображения длинного списка совпадений отображается только их количество.
-p или -page-count: этот параметр выводит номера страниц, на которых найдены совпадения, и количество вхождений паттерна на странице.
-m или --max-count [число]: задает максимальное количество совпадений. Это означает, что при достижении заданного количества совпадений команда перестает читать файл.
Полный список поддерживаемых опций можно найти на страницах руководства или в