在文件中searchstring的最佳方法是什么?

标题说明了自己。 我只想知道它是否存在,而不是它在哪里。 有没有一个class轮来实现这一目标?

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

这将整个文件加载到内存中。 如果你正在处理大型文件,更喜欢sl them它们。
这意味着一次加载一行,而不是整个文件。

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

清理垃圾是一个很好的做法,而不是让垃圾收集器在某个时候处理它。 如果你的程序是长寿的,而不仅仅是一些快速的脚本,这是更重要的。 使用代码块可确保在块终止时closuresFile对象。

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

grep for foo或者bar或者baz,从ruby1line.txt中被盗。

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

那么看起来eed3si9n有一个class轮下来,这是更长的解决scheme:

 f = File.new("file.txt") text = f.read if text =~ /string/ then #relevant code end 

如果你的操作系统有一个grep包,你可以使用系统调用:

 system("grep meow cat_sounds.txt") 

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

如果您发现自己在一个使用grep的系统上,可能会发现这是“最好的”方法,因为在文件操作方面Ruby可能会很慢。

这只读取文件的第一次出现的“string”,并逐行处理它 – 不是一次读取整个文件。

 def file_contains_regexp?(filename,regexp) File.foreach(filename) do |line| return true if line =~ regexp end return false end