From: Todd Benson Date: 2008-05-15T02:01:12+09:00 Subject: Re: Need help for finding difference between files On Wed, May 14, 2008 at 11:57 AM, Todd Benson wrote: > On Wed, May 14, 2008 at 11:29 AM, Cheyne Li > wrote: >> Clement Ow wrote: >>> Cheyne Li wrote: >>>> Hi, there >>>> >>>> Is there a simple way to find the difference between two files? I'm a >>>> new ruby learner. I'm not familiar with the Stander class in Ruby. Is >>>> there any can find the difference between two files and return a string >>>> or array? >>> >>> What kinda difference do you wanna look at? is is file attributes? >>> >>> You can try something like File.compare or File.fnmatch which wll return >>> true if the file matches.. >>> >>> If it's not something what you really need, please do explain your >>> situation abit more and maybe more people might be able to help ;) >> >> Ok, I need to compare the contents in 2 files. Print out each difference >> in both files. for example, if i have 2 files: f1.txt, f2.txt >> >> in f1: in f2: >> I'm learning ruby. I'm learning ruby. >> I'm not good at it. I'm good at it. >> >> So, I want to know if there a function can return an array that contains >> "I'm not good at it." and "I'm good at it." >> >> I wonder if I have to compare line by line or there is function in Ruby >> would do that for me. > > If you don't mind reading the whole files in to memory, you can try > doing something like... > > arr1 = File.open("f1", "r").readlines > arr2 = File.open("f2", "r").readlines > arr1 - arr2 # all in arr1 not in arr2 > arr2 - arr1 # all in arr2 not in arr1 > arr1 || arr2 # all that both share (intersection) > arr1 && arr2 # every line from both (union) Sorry that's | and &, _not_ || and && and I had it backwards... arr1 | arr2 # all of both arr1 & arr2 # all that intersect sorry for confusion, Todd