Проверить, существует ли одна конкретная строка в файле? - PullRequest
2 голосов
/ 19 августа 2010

Я хочу добавить следующую строку в ~ / .bashrc:

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

Но только если его не существует.

Как я могу проверить, существует ли уже эта строка?

Ответы [ 5 ]

2 голосов
/ 19 августа 2010
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 голосов
/ 19 августа 2010

Это может быть?

File.open(".bashrc").each_line do |line|
    if (line == "foo")
        return true
    end
end
return false
1 голос
/ 13 марта 2012

Так как в этот день и возраст не хватает возврата кареты ...

return File.open('.bashrc').lines.any? { |line| line.chomp == 'foo'}
0 голосов
/ 10 июня 2015

Я только что наткнулся на этот вопрос, пытаясь проверить, существует ли уже определенный маршрут Rails:

route = "mount Blorgh::Engine"
File.open('config/routes.rb').each_line.any? {|line| line[/#{route}/] }
0 голосов
/ 20 августа 2010

Ваш вопрос, вероятно, имел в виду:

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|
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...