14

自从我将 ruby​​ 用于此类事情已经很长时间了,但是我忘记了如何打开文件、查找字符串以及打印 ruby​​ 找到的内容。这是我所拥有的:

#!/usr/bin/env ruby
f = File.new("file.txt")
text = f.read
if text =~ /string/ then
puts test
end

我想确定 config/routes.rb 中的“文档根”(路由)是什么

如果我打印字符串,它会打印文件。

我觉得我不记得这是什么很愚蠢,但我需要知道。

希望我可以让它打印出来:

# Route is:
blah blah blah blah
4

3 回答 3

16
File.open 'file.txt' do |file|
  file.find { |line| line =~ /regexp/ }
end

这将返回与正则表达式匹配的第一行。如果您想要所有匹配的行,请更改findfind_all.

它也更有效率。它一次遍历一行,而不将整个文件加载到内存中。

此外,该grep方法可用于:

File.foreach('file.txt').grep /regexp/
于 2012-05-31T11:31:04.260 回答
3

获取根的最简单方法是:

rake routes | grep root

如果你想用 Ruby 来做,我会选择:

File.open("config/routes.rb") do |f|
  f.each_line do |line|
    if line =~ /root/
      puts "Found root: #{line}"
    end
  end
end
于 2012-05-31T11:32:09.073 回答
2

在里面text你有整个文件作为一个字符串,你可以使用正则表达式来匹配它.match,或者像 Dave Newton 建议的那样,你可以遍历每一行并检查。例如:

f.each_line { |line|
  if line =~ /string/ then
    puts line
  end
}
于 2012-05-31T11:30:27.760 回答