在Ruby中搜索大文件的方法更简单?

ckb*_*umb 5 ruby

我正在编写一个简单的日志嗅探器,它将搜索日志以查找指示我支持的软件问题的特定错误.它允许用户指定日志的路径并指定他们想要搜索的天数.

如果用户关闭日志滚动,则日志文件有时会变得非常大.目前我正在做以下事情(虽然尚未完成):

File.open(@log_file, "r") do |file_handle|
    file_handle.each do |line|
        if line.match(/\d+++-\d+-\d+/)
          etc...
Run Code Online (Sandbox Code Playgroud)

line.match显然会查找我们在日志中使用的日期格式,其余逻辑将在下面.但是,有没有更好的方法来搜索没有.each_line的文件?如果没有,我对此完全没问题.我只是想确保我使用可用的最佳资源.

谢谢

tkr*_*man 6

  • fgrep作为独立或调用system('fgrep ...')可能是更快的解决方案
  • file.readlines 可能在速度上更好,但这是一个时空权衡
  • 看看这个小小的研究 - 最后的方法似乎相当快.