【发布时间】:2018-02-19 02:19:54
【问题描述】:
如何使用 grep 在文件中搜索一串 unicode 字符?
我正在尝试计算字符串“\xfe\n\xfe”的出现次数。我可以通过以下方式使用 Python 找到它:
open(filename).read().count('\xfe\n\xfe')
这会找到几千个匹配项。
但是,由于这会将整个文件加载到内存中,如果我尝试搜索大于系统内存的文件,则会崩溃。
所以我试图通过 grep 来做同样的事情:
grep -P -c "\xfe\n\xfe" filename
它几乎消耗了 0 个内存,这很棒,但即使我在同一个文件上运行它,它也会找到 0 个匹配项。我的语法有什么问题?
【问题讨论】:
-
grep以行为单位运行。 -
您不必在 python 中将整个文件读入内存。或者,给定一个健全的终端(至少,一个与您的文件使用相同编码的终端),您可以只粘贴字符而无需转义。即
grep þ有效。 -
我已经在文件中测试了 160000 行(包含 40000 个匹配项)。在这种情况下,Python 会比 grep 快得多。 @Moses Koledoye 的解决方案应该可以正常工作