Member 13199742 Ответов: 0

Руби элементы массива доступ к


Я читаю из файла, скажем ... 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

0 Ответов