Как grep возвращает результат, тогда при открытии control + f не может найти? - PullRequest
0 голосов
/ 13 октября 2018

Я запустил следующее

grep -irln "mold" 

для каталога, использующего cygwin, на моем компьютере с Windows 7 Enterprise на работе, и он нашел совпадение в определенном файле PDF.Однако, когда я открываю файл через Adobe или Chrome и выполняю control + f и ищу пресс-форму, результаты не обнаруживаются.Этот PDF был через службу OCR.Поэтому я предполагаю, что мой вопрос заключается в том, как grep может вернуть результаты, но затем выполнить Ctrl + F для открытого файла и ничего не получить?

1 Ответ

0 голосов
/ 13 октября 2018

Похоже, вы неправильно понимаете, что grep ищет все вхождения в файле и что файл PDF написан на языке разметки для отображения графического вида текста и изображений.
Использование в качестве примера очень простого текстового файла

$ cat << EOF > example.txt
> one dog
> two cats
> three chickens
> EOF

мы конвертируем его в postscript, а затем в pdf

$ a2ps example.txt -o example.ps
[example.txt (plain): 1 page on 1 sheet]
[Total: 1 page on 1 sheet] saved into the file `example.ps'
$ ps2pdf example.ps example.pdf

, поэтому у нас есть 3 файла с одинаковым текстом, но постскриптум и PDF имеют свою разметку вокруг оригиналаtext.
Теперь, если мы попросим grep найти курицу

$ grep chicken example.*
example.ps:(three chickens) N
example.txt:three chickens

, вы увидите, что PDF-файл не содержит chicken в виде простого текста.Это потому, что исходный текст сжат внутри PDF.

Ваш результат mold является ложным срабатыванием.Текст внутри PDF сжат, и grep не может его найти.

...