2011-08-02 178 views
4

我有這個用Ruby編寫的小程序。我在這裏發現了一段很好的代碼,用於查找和替換文件中的某些內容,但似乎並不奏效。 這裏是代碼:查找並替換Ruby中的文件

#!/usr/bin/env ruby 

DOC = "test.txt" 
FIND = /,,^M/ 
SEP = "\n" 

#make substitution 
File.read(DOC).gsub(FIND, SEP) 

#Check if the line already exist 
unique_lines = File.readlines(DOC).uniq 

#Save the result in a new file 
File.open('test2.txt', 'w') { |f| f.puts(unique_lines) } 

謝謝大家!

回答

8

我跳到你做,看看行已經存在,並且通常是這樣的(在這裏我想用「BAR」,以取代「富」)去檢查:

full_path_to_read = File.expand_path('~/test1.txt') 
full_path_to_write = File.expand_path('~/test2.txt') 

File.open(full_path_to_read) do |source_file| 
    contents = source_file.read 
    contents.gsub!(/FOO/, 'BAR') 
    File.open(full_path_to_write, "w+") { |f| f.write(contents) } 
end 

採用expand_path在這裏也可能有些迂腐,但我喜歡它,所以我不會不小心打破我不想要的某個文件。