当前位置:  开发笔记 > 后端 > 正文

在文件中搜索字符串的最佳方法是什么?

如何解决《在文件中搜索字符串的最佳方法是什么?》经验,为你挑选了3个好方法。

标题真的说明了一切.我只想知道它是否存在,而不是它的存在.是否有一个班轮实现这一目标?



1> AdamK..:
File.open(filename).grep(/string/)

这会将整个文件加载到内存中.如果您正在处理大文件,请更喜欢啜饮它们.
这意味着一次加载一行,而不是整个文件.

File.foreach(filename).grep(/string/)

最好是自己清理,而不是让垃圾收集器在某个时候处理它.如果你的程序是长寿的而不仅仅是一些快速的脚本,这一点更为重要.使用代码块可确保File在块终止时关闭对象.

File.foreach(filename) do |file|
  file.grep(/string/)
end


这实际上泄漏了文件描述符,这可能会导致严重的问题.这是一个更清洁的替代方案,它将在使用后关闭文件.`open('some.txt'){| f | f.grep(/ string /)}`
并且还导致将整个文件加载到内存中.`open("some.txt"){| f | f.each_line.detect {| line | /re/.match(line)}}`
-1因为某些原因它应该为true时返回false.调查原因.
伙计们,我认为File#grep无法将文件拖入内存.你能在博士中向我展示一下吗?

2> Eugene Yokot..:

grep for foo OR bar OR baz,从ruby1line.txt偷来的.

$  ruby -pe 'next unless $_ =~ /(foo|bar|baz)/' < file.txt



3> Ryan Bigg..:

如果您的操作系统具有grep软件包,则可以使用系统调用:

system("grep meow cat_sounds.txt")

如果grep返回任何内容,则返回true,否则返回false。

如果您在使用的系统上找到自己grep,则可能会发现这是“最佳”方法,因为Ruby在进行文件操作时可能会变慢。


我认为最好假设他是理智的。
他还没有指定他的操作系统= \
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有