检查文件中是否存在一个特定的行?

时间:2010-08-19 01:31:19

标签: ruby

我想将以下行添加到〜/ .bashrc:

export PATH:/var/lib/gems/1.9.1/bin:$PATH

但前提是它不存在。

我如何检查该线是否已存在?

5 个答案:

答案 0 :(得分:2)

这可能是吗?

File.open(".bashrc").each_line do |line|
    if (line == "foo")
        return true
    end
end
return false

答案 1 :(得分:2)

path_seen = false
File.open( ~/.bashrc ) do |f|
     f.grep( /export PATH:\/var\/lib\/gems\/1.9.1\/bin:\$PATHg/ ) do |line|
       path_seen = true
     end
end

答案 2 :(得分:1)

由于当时的回车供不应求......

return File.open('.bashrc').lines.any? { |line| line.chomp == 'foo'}

答案 3 :(得分:0)

你的问题可能意味着:

export PATH=/var/lib/gems/1.9.1/bin:$PATH

(注意第一个':'应该是'=')

此外,在创建具有多个'/'的正则表达式时(根据@ ennuikiller的解决方案),您可能希望使用%r {}文字构造函数而不是//。例如:

f.grep( /export PATH:\/var\/lib\/gems\/1.9.1\/bin:\$PATHg/ ) do |line|

变得更容易阅读(稍作修正 - 删除尾随'g'):

f.grep( %r{export PATH:/var/lib/gems/1.9.1/bin:\$PATH} ) do |line|

答案 4 :(得分:0)

我刚刚遇到这个问题,想要检查特定的Rails路由是否已经存在:

route = "mount Blorgh::Engine"
File.open('config/routes.rb').each_line.any? {|line| line[/#{route}/] }