Ruby 如何读取文件内容,然后将内容拆分为多个文件?

Ruby 如何读取文件内容,然后将内容拆分为多个文件?,ruby,regex,rubygems,Ruby,Regex,Rubygems,假设我有一个包含以下文本的文件: 旧文件 create_table "users", force: :cascade do |t| t.string "name" end create_table "animals", force: :cascade do |t| t.string "kind" end 我需要拆分此文件,以便在不同的文件上创建每个create\u table块。例如: file1 create_table "users", force: :cascade do |t

假设我有一个包含以下文本的文件:

旧文件

create_table "users", force: :cascade do |t|
  t.string "name"
end

create_table "animals", force: :cascade do |t|
  t.string "kind"
end
我需要拆分此文件,以便在不同的文件上创建每个create\u table块。例如:

file1

create_table "users", force: :cascade do |t|
  t.string "name"
end
文件2

create_table "animals", force: :cascade do |t|
  t.string "kind"
end
我可以读取文件,然后将其分配给某个变量

string = File.open('old_file', 'r'){ |file| file.read }
但我不能对我下一步该做的事耿耿于怀

也许我可以使用正则表达式来识别每次新的'create\u table'标题,然后以某种方式创建新文件,将内容写入其中并关闭文件,直到下一次'create\u table'出现


您将如何做到这一点?

这里有一个ruby解决方案:

index = 0                                                                                                                                                                                                                                
IO.foreach("old_file.rb") do |line|                                                                                                                                                                                                      
  index += 1 if line =~ /^create_table/                                                                                                                                                                                                  
  File.open("file#{index}", 'a') do |f|                                                                                                                                                                                                  
    f.write(line)                                                                                                                                                                                                                        
  end                                                                                                                                                                                                                                    
end      

下面是一个ruby解决方案:

index = 0                                                                                                                                                                                                                                
IO.foreach("old_file.rb") do |line|                                                                                                                                                                                                      
  index += 1 if line =~ /^create_table/                                                                                                                                                                                                  
  File.open("file#{index}", 'a') do |f|                                                                                                                                                                                                  
    f.write(line)                                                                                                                                                                                                                        
  end                                                                                                                                                                                                                                    
end      

所以有一个断线。。。检查您是否可以通过标识一个\n或不可见的字符来拆分它。因为存在换行符。。。检查您是否可以通过标识一个\n或不可见的字符来拆分它