标题真的说明了一切.我只想知道它是否存在,而不是它的存在.是否有一个班轮实现这一目标?
File.open(filename).grep(/string/)
这会将整个文件加载到内存中.如果您正在处理大文件,请更喜欢啜饮它们.
这意味着一次加载一行,而不是整个文件.
File.foreach(filename).grep(/string/)
最好是自己清理,而不是让垃圾收集器在某个时候处理它.如果你的程序是长寿的而不仅仅是一些快速的脚本,这一点更为重要.使用代码块可确保File
在块终止时关闭对象.
File.foreach(filename) do |file| file.grep(/string/) end
grep for foo OR bar OR baz,从ruby1line.txt偷来的.
$ ruby -pe 'next unless $_ =~ /(foo|bar|baz)/' < file.txt
如果您的操作系统具有grep软件包,则可以使用系统调用:
system("grep meow cat_sounds.txt")
如果grep
返回任何内容,则返回true,否则返回false。
如果您在使用的系统上找到自己grep
,则可能会发现这是“最佳”方法,因为Ruby在进行文件操作时可能会变慢。