Для того, что вы опубликовали, я думаю, что-то вроде этого будет:
str = <<EOF
hostname1 {
hi
}
hostname2 {
how
}
hostname3 {
are
}
EOF
hostnames = str.scan(/^\w+ {.*?}/m)
hostnames.each do |hostname|
#here save it to a new file
puts hostname
end
EDIT
Вот полный пример, он будет читать hostnames.cfg
и сохранять отдельные файлы в папке с именем hostnames
hostnames.cfg
hostname1 {
hi
}
hostname2 {
how
}
hostname3 {
are
}
whatever.rb
file = File.open('./hostnames.cfg', 'r')
content = file.readlines.join
file.close
hostnames = content.scan(/^\w+ {.*?}/m)
hostnames.each do |hostname|
name = hostname.scan(/^\w+/m).first
new = File.open("./hostnames/#{name}.cfg", "w+")
new.write(hostname)
new.close
end