Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: use to files - grep one to eliminate entries from another file.

by newkendall (Initiate)
on Jan 23, 2012 at 18:23 UTC ( #949483=note: print w/ replies, xml ) Need Help??


in reply to use to files - grep one to eliminate entries from another file.

I'm looking to find common lines between two files (mail.fil) and (THIDSerrs). I then want to eliminate the common lines from the one file, mail.fil.

#!/usr/local/perl-5.12.3/bin/perl use strict; use warnings; open FILE,"< mail.fil"; my @oralines=<FILE>; close FILE; #print @oralines; open FILE,"<THIDSerrs"; my @errs = <FILE>; close FILE; #print @errs; my @subarray = (); foreach my $oralines(@oralines) { foreach my $errs(@errs) { push @subarray, $oralines if grep /$errs/, @oralines; } } print "@subarray \n";

Hope this is more readable - I'm new at this.


Comment on Re: use to files - grep one to eliminate entries from another file.
Download Code
Re^2: use to files - grep one to eliminate entries from another file.
by JavaFan (Canon) on Jan 23, 2012 at 18:29 UTC
    I'm looking to find common lines between two files
    $ man comm NAME comm - compare two sorted files line by line SYNOPSIS comm [OPTION]... FILE1 FILE2 DESCRIPTION Compare sorted files FILE1 and FILE2 line by line. With no options, produce three-column output. Column one +contains lines unique to FILE1, column two contains lines unique to FIL +E2, and column three contains lines common to both files. -1 suppress lines unique to FILE1 -2 suppress lines unique to FILE2 -3 suppress lines that appear in both files --help display this help and exit --version output version information and exit

      Trying to do all of this in Perl - management doesn't want UNIX commands so I can port this to Windows machines. Thanks.

        Thanks - probably won't work for management; I'll just try to figure it out in Perl on my own. Thanks for your efforts

Re^2: use to files - grep one to eliminate entries from another file.
by Cristoforo (Deacon) on Jan 24, 2012 at 00:43 UTC
    By doing a 'Super Search', (located at the top of any PerlMonks page here), with the words 'find common lines', you will find similiar problems and solutions.

    Only, they find lines in common rather than unique. But its not difficult to figure this the difference, I believe.

    If the THIDS file isn't too large for your memory, you could read it into a hash to check against the 'mail.fil' for differences.

    #!/usr/local/perl-5.12.3/bin/perl use strict; use warnings; open my $THIDS,"<", "THIDSerrs" or die "Could not open 'THIDSerrs' for + reading. $!"; my %data = map {$_ => 1} <$THIDS>; close $THIDS or die "Unable to close 'THIDSerrs' - reading. $!"; open my $mail, "<" , "mail.fil" or die "Could not open 'mail.fil' for +reading. $!"; open my $out, ">", "whatever.dat" or die "Unable to open 'whatever.dat +' for write. $!"; while (<$mail>) { print $out unless $data{$_}; } close $mail or die "Unable to close 'mail.fil' - reading. $!"; close $out or die "Unable to close 'whatever.dat' from writing. $!";

      Thanks. I'll work on this tonight

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://949483]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (15)
As of 2014-07-28 16:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (204 votes), past polls