Я все еще пытаюсь выучить Ruby, так что это вряд ли хорошее решение, но это возможно. Он считывает содержимое первого файла в хеш, а затем проверяет содержимое второго файла. Я думаю, что это было бы достаточно эффективно (ну ... если первый файл не слишком велик, чтобы уместиться в памяти).
lines = Hash.new
File.open( "mac1.txt", 'r' ).each_line do |l|
lines[l] = true
end
File.open( "mac2.txt", 'r' ).each_line do |l|
if ( lines[l] == true )
puts l
end
end
Редактировать Для полноты, вот очень краткая версия, предложенная в комментариях Марка Томаса с удалением пробелов, предложенная Гэвином Андереггом. Руби - сладкий язык.
lines = Hash.new
File.open( "mac1.txt", 'r' ).each_line {|l| lines[l.strip!] = true}
File.open( "mac2.txt", 'r' ).each_line {|l| puts l if lines[l.strip!]}