Je veux ajouter la ligne suivante à ~/.bashrc:Vérifiez si une ligne spécifique existe dans un fichier?
export PATH:/var/lib/gems/1.9.1/bin:$PATH
Mais seulement si elle n'existe pas.
Comment puis-je vérifier si cette ligne existe déjà?
Je veux ajouter la ligne suivante à ~/.bashrc:Vérifiez si une ligne spécifique existe dans un fichier?
export PATH:/var/lib/gems/1.9.1/bin:$PATH
Mais seulement si elle n'existe pas.
Comment puis-je vérifier si cette ligne existe déjà?
C'est peut-être?
File.open(".bashrc").each_line do |line|
if (line == "foo")
return true
end
end
return false
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
Votre question signifiait probablement dire:
export PATH=/var/lib/gems/1.9.1/bin:$PATH
(note de la première ':' aurait été '=')
En outre, lors de la création d'expressions régulières avec Beaucoup de '/' (comme dans la solution de @ ennuikiller) vous pouvez utiliser le constructeur% r {} plutôt que //. Par exemple:
f.grep(/export PATH:\/var\/lib\/gems\/1.9.1\/bin:\$PATHg/) do |line|
devient plus facile à lire (avec correction mineure - le retrait de la fuite « g »):
f.grep(%r{export PATH:/var/lib/gems/1.9.1/bin:\$PATH}) do |line|
Depuis les retours chariot sont rares en ce jour et l'âge .. .
return File.open('.bashrc').lines.any? { |line| line.chomp == 'foo'}
Je viens de tomber sur cette question qui cherchent à vérifier si un itinéraire spécifique Rails était déjà présent:
route = "mount Blorgh::Engine"
File.open('config/routes.rb').each_line.any? {|line| line[/#{route}/] }