On Wed, May 14, 2008 at 11:29 AM, Cheyne Li
<happy.go.lucky.clr / gmail.com> 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)

hth,
Todd