file_line to „ok” zasób zapewniający, że linie pojawiają się w pliku, ale nie tak dobry, aby upewnić się, że nie ma tam linii - dlatego całkowicie przestałem go używać.
Jeśli naprawdę potrzebujesz zarządzać tym fragmentarycznym plikiem i musisz upewnić się, że linia całkowicie zniknęła, zasoby augeas osiągną to znacznie lepiej. Jest to dość skomplikowane, ale działa naprawdę dobrze. I powinien już być obiektyw dla pliku sudoers.
Ale lornix ma rację. Nie powinieneś zarządzać tym plikiem w ten sposób. Jest pełen niebezpieczeństw i są tutaj potwory.
Preferuj szablony i dołączaj pliki.
Aby jednoznacznie odpowiedzieć na twoje pytanie: Nie możesz. Jedno spojrzenie na kod źródłowy file_line pokazuje, że szuka on tylko dokładnego dopasowania - białe znaki i wszystko.
def destroy
local_lines = lines
File.open(resource[:path],'w') do |fh|
fh.write(local_lines.reject{|l| l.chomp == resource[:line] }.join(''))
end
end
Oto interesujące rozwiązanie.
Uwaga: z jakiegoś powodu, jeśli chcemy usunąć wpis oparty na „dopasuj”, „zamień” musi być fałszywe.
Objaśnienie (najlepiej, co mogę zaoferować):
multiple => true,
Więcej informacji tutaj: file_line nie może usunąć wierszy przez wyrażenie regularne?
źródło
match_for_absence
, dodaj je.) (3) Ponieważ celem jest dopasowanie białych znaków, prawdopodobnie *
raczej powinieneś użyć (spacja + gwiazda).*
.