вместо того, чтобы использовать приведенный выше код, я создал тестовый массив из 100 строк, каждая строка содержит массив из 6 элементов.
Вы передаете массив и номер столбца, который вы хотите сопоставить, и этот метод печатает в отдельных файлах строки, имеющие один и тот же элемент n-й.
Поскольку я использовал целые числа, я использовал n-й элемент каждой строки в качестве имени файла. Вы можете использовать счетчик, или md5 элемента, или что-то в этом роде, если ваш n-й элемент не создает хорошего имени файла.
a = []
100.times do
b = []
6.times do
b.push rand(10)
end
a.push(b)
end
def print_files(a, column)
h = Hash.new
a.each do |element|
h[element[2]] ? (h[element[column]] = h[element[column]].push(element)) : (h[element[column]] = [element])
end
h.each do |k, v|
File.open("output/" + k.to_s, 'w') do |f|
v.each do |line|
f.puts line.join(", ")
end
end
end
end
print_files(a, 2)