【问题标题】:How does grep return a result, then when opened, control+f cannot find?grep怎么返回结果,然后打开时control+f找不到?
【发布时间】:2019-03-18 03:33:00
【问题描述】:

我跑了以下

grep -irln "mold" 

在我的 Windows 7 Enterprise 机器上使用 cygwin 对一个目录进行检查,它在特定的 pdf 文件中找到了匹配项。但是,当我通过 adobe 或 chrome 打开文件并执行 control+f 并搜索模具时,没有找到任何结果。此 PDF 已通过 OCR 服务。所以我想我的问题是 grep 怎么可能返回结果,然后在打开的文件上执行 ctrl+f 却一无所获?

【问题讨论】:

  • pdf 不是纯文本文件,是吗?即使您进行了 OCR 编辑。

标签: string search grep cygwin


【解决方案1】:

您似乎误解了 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 在原始文本周围有其特定的标记语言。
现在如果我们让 grep 寻找鸡

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

您可以看到 PDF 文件不包含 chicken 作为纯文本。这是因为原始文本被压缩在 PDF 中。

mold 的结果是误报。 PDF里面的文字被压缩了,grep找不到。

【讨论】:

  • 谢谢,看来是我误会了。感谢您清楚地解释并举例说明,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2013-12-13
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多