В настоящее время я изучаю ruby, и вот что я пытаюсь сделать: скрипт, который открывает файл, создает замену, затем сравнивает все строки друг с другом, чтобы увидеть, существует ли он много раз.Итак, я попытался работать непосредственно со строкой, но я не нашел, как это сделать, поэтому я поместил каждую строку в массив и сравнил каждую строку.Но у меня возникла первая проблема.Вот мой код:
#!/usr/bin/env ruby
DOC = "test.txt"
FIND = /,,^M/
SEP = "\n"
#make substitution
puts File.read(DOC).gsub(FIND, SEP)
#open the file and put every line in an array
openFile = File.open(DOC, "r+")
fileArray = openFile.each { |line| line.split(SEP) }
#print fileArray #--> give the name of the object
#Cross the array to compare every items to every others
fileArray.each do |items|
items.chomp
fileArray.each do |items2|
items2.chomp
#Delete if the item already exist
if items = items2
fileArray.delete(items2)
end
end
end
#Save the result in a new file
File.open("test2.txt", "w") do |f|
f.puts fileArray
end
В конце у меня есть только имя объекта массива "fileArray".Я распечатываю объект после разделения, и у меня то же самое, поэтому я думаю, что проблема здесь.Требуется небольшая помощь (если вы знаете, как это сделать без массива, просто со строкой в файле, ответьте также по достоинству).Спасибо!
РЕДАКТИРОВАТЬ: Итак, вот мой код сейчас
#!/usr/bin/env ruby
DOC = "test.txt"
FIND = /,,^M/
SEP = "\n"
#make substitution
File.read(DOC).gsub(FIND, SEP)
unique_lines = File.readlines(DOC).uniq
#Save the result in a new file
File.open('test2.txt', 'w') { |f| f.puts(unique_lines) }
Не могу понять, как сжать это.