Руби элементы массива доступ к
Я читаю из файла, скажем ... list.txt и проверьте, есть ли строки из list.txt присутствуют в нескольких файлах в каталоге. (E:\work...). Ниже приведен мой код, он работает так, как и ожидалось.
pool = '' rows = Array[] id_files = Dir.glob("E:\work'*-access.txt") value=File.open('E:\nando\list.txt').read value.each_line do |line| line.chomp! id_files.each do |file_name| text = File.read(file_name) new_content = text.gsub( /#{Regexp.escape(line)}\,\s/, '').gsub( /#{Regexp.escape(line)}/, '' ) unless text == new_content text.each_line do |li| if li.match(/#{Regexp.escape(line)}/) then rows << li # I didn't complete the array part puts rows[0] puts rows[1] pool = li.split(" ")[0] end end File.open('E:\Removed_users.txt', 'a') { |log| log.puts "Removed from: #{file_name}" log.puts "Removed id : #{line}" log.puts "Removed from row :#{pool}" log.puts "*" * 50 } File.open(file_name, "w") { |file| file.puts new_content } end end end
Я пытаюсь улучшить код для печати в приведенном ниже формате в файл журнала. Например, для строк-class\234ha и cap\7y6t5 из одного файла в каталоге.
Removed class\234ha from row = id and dept Removed cap\7y6t5 from row = id
E:\work\sample-access.txt
CDA created on September 20th 1999 Owner: Edward Jenner Access IDs, id = class\234ha, class\poi23, class\opiuj, cap\7y6t5 dept = sub\6985de, ret\oiu87, class\234ha rec = ret\oiu87
Я могу заставить его печатать только один раз,то есть для класса\234ha я получаю вывод как
Removed from: E:\work\sample-access.txt Removed user : class\234ha Removed from row = id
в идеале так и должно быть
Removed from: E:\work\sample-access.txt Removed user : class\234ha Removed from row = id and dept
любые предложения были бы очень полезны. Спасибо.
Что я уже пробовал:
pool = '' rows = Array[] id_files = Dir.glob("E:\work'*-access.txt") value=File.open('E:\nando\list.txt').read value.each_line do |line| line.chomp! id_files.each do |file_name| text = File.read(file_name) new_content = text.gsub( /#{Regexp.escape(line)}\,\s/, '').gsub( /#{Regexp.escape(line)}/, '' ) unless text == new_content text.each_line do |li| if li.match(/#{Regexp.escape(line)}/) then rows << li # I didn't complete the array part puts rows[0] puts rows[1] pool = li.split(" ")[0] end end File.open('E:\Removed_users.txt', 'a') { |log| log.puts "Removed from: #{file_name}" log.puts "Removed id : #{line}" log.puts "Removed from row :#{pool}" log.puts "*" * 50 } File.open(file_name, "w") { |file| file.puts new_content } end end end