如何使用grep在文件中搜索一串unicode字符?

我正在尝试计算字符串“ \ xfe \ n \ xfe”的出现次数。我可以通过以下方式在Python中找到它:

open(filename).read().count('\xfe\n\xfe')


找到数千个匹配项。

但是,由于这会将整个文件加载到内存中,因此如果我尝试搜索大于系统内存的文件,则会崩溃。

所以我试图通过以下方式对grep进行等效处理:

grep -P -c "\xfe\n\xfe" filename


它几乎消耗了0个内存,这非常好,但是即使我在同一文件上运行它,它也会找到0个匹配项。我的语法有什么问题?

最佳答案

您无需将整个文件读入内存。您可以遍历文件,并在每一行中每隔一行就计算该字符串在行中的出现次数:

count = 0
with open(filename) as f:
   prev_line = next(f)
   for line in f:
      if prev_line.endswith('\xfe\n') and line.startswith('\xfe'):
         count += 1
      prev_line = line

09-30 15:48