Comparing values in 2 textfiles and returning the missing values

Discussion in 'Perl' started by Jorgen Gustafsson, Dec 11, 2003.

  1. Hi,
    im trying to write a small progam to compare data in 2 textfiles.

    I want to search for values that doesnt exist in File2.
    The result should be "3" in the example below but Im not
    able to do this since my program crosschecks all numbers in
    both files and Im getting a lot of "hits". (outer and inner while-loops)


    Below is an examples of the textfiles:

    File1.txt File2.txt
    1 1
    2 2
    3 4
    4 5
    5 6
    7
    8
    9
    10

    Thanks in advance...!
    Jorgen
    Jorgen Gustafsson, Dec 11, 2003
    #1
    1. Advertising

  2. Jorgen Gustafsson

    Jim Gibson Guest

    In article <>, Jorgen
    Gustafsson <> wrote:

    > Hi,
    > im trying to write a small progam to compare data in 2 textfiles.
    >
    > I want to search for values that doesnt exist in File2.
    > The result should be "3" in the example below but Im not
    > able to do this since my program crosschecks all numbers in
    > both files and Im getting a lot of "hits". (outer and inner while-loops)
    >
    >
    > Below is an examples of the textfiles:
    >
    > File1.txt File2.txt
    > 1 1
    > 2 2
    > 3 4
    > 4 5
    > 5 6
    > 7
    > 8
    > 9
    > 10
    >
    > Thanks in advance...!
    > Jorgen


    If you have a program written, it is best to include that in your post.

    If your files are short enough, you can try reading file 2 first and
    creating a hash with the values from file 2 as keys (the value of the
    hash doesn't matter, so set it to 1 or increment to get a count). Then,
    read file 1 and see if the corresponding keys exist in your hash.

    Here's a quick sample program (with two files appended and separated by
    a BREAK line):

    #!/opt/perl/bin/perl

    use strict;
    use warnings;

    my %seen;
    while(<DATA>) {
    chomp;
    last if /BREAK/;
    $seen{$_}++;
    }

    while(<DATA>) {
    chomp;
    if( ! $seen{$_} ) {
    print "$_ not in file 1\n";
    }
    }

    __DATA__
    1
    2
    4
    5
    6
    7
    8
    9
    10
    BREAK
    1
    2
    3
    4
    5

    __OUTPUT__
    3 not in file 1

    FYI: This newsgroup is defunct. Try comp.lang.perl.misc in the future
    for better response.
    Jim Gibson, Dec 11, 2003
    #2
    1. Advertising

  3. Jorgen Gustafsson wrote:
    > Hi,
    > im trying to write a small progam to compare data in 2 textfiles.
    > I want to search for values that doesnt exist in File2.


    perldoc -q difference:
    "How do I compute the difference of two arrays? How do I compute the
    intersection of two arrays?"

    While the solution is written for arrays, it is trivial to modify it for
    files.

    jue
    Jürgen Exner, Dec 12, 2003
    #3
  4. Jorgen Gustafsson <> wrote in
    news::

    > Hi,
    > im trying to write a small progam to compare data in 2 textfiles.
    >
    > I want to search for values that doesnt exist in File2.
    > The result should be "3" in the example below but Im not
    > able to do this since my program crosschecks all numbers in
    > both files and Im getting a lot of "hits". (outer and inner while-loops)


    If you're on a unix-like system, you can use the 'comm' utility for this.

    --
    Eric
    $_ = reverse sort $ /. r , qw p ekca lre uJ reh
    ts p , map $ _. $ " , qw e p h tona e and print
    Eric J. Roode, Dec 12, 2003
    #4
  5. Hi, thanks for all help!

    Found a link to a perl-module that seems to do the job for me in comp.lang.perl.misc.
    (diff and sdiff)
    http://search.cpan.org/~nedkonz/Algorithm-Diff-1.15/lib/Algorithm/Diff.pm#diff

    /Jorgen


    On Thu, 11 Dec 2003 16:58:04 +0100, Jorgen Gustafsson <> wrote:

    >Hi,
    >im trying to write a small progam to compare data in 2 textfiles.
    >
    >I want to search for values that doesnt exist in File2.
    >The result should be "3" in the example below but Im not
    >able to do this since my program crosschecks all numbers in
    >both files and Im getting a lot of "hits". (outer and inner while-loops)
    >
    >
    >Below is an examples of the textfiles:
    >
    >File1.txt File2.txt
    >1 1
    >2 2
    >3 4
    >4 5
    >5 6
    > 7
    > 8
    > 9
    > 10
    >
    >Thanks in advance...!
    >Jorgen
    Jorgen Gustafsson, Dec 12, 2003
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Phoenix
    Replies:
    3
    Views:
    1,301
    Joris Gillis
    Dec 30, 2004
  2. Replies:
    6
    Views:
    323
    Steven Bethard
    Jan 31, 2005
  3. hiro
    Replies:
    12
    Views:
    399
    Paul Rubin
    Jun 25, 2007
  4. Stef Mientki

    how to search multiple textfiles ?

    Stef Mientki, Sep 26, 2008, in forum: Python
    Replies:
    12
    Views:
    593
    Lawrence D'Oliveiro
    Oct 1, 2008
  5. Rish

    Beginners question - textfiles

    Rish, Dec 5, 2003, in forum: ASP General
    Replies:
    1
    Views:
    111
Loading...

Share This Page