Walt Mankowski via plug on 27 May 2021 17:29:47 -0700


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Using diff


I usually end up doing this in Perl or Python. The diff solution is
nice. If you're interested, I've attached a little Perl script I just
whipped up. It has the advantage of not requiring the lists to be
sorted.

Then I wrote a Python version, too. :)

Walt

On Thu, May 27, 2021 at 07:36:05PM -0400, Michael Lazin via plug wrote:
> Awesome, thanks!   Comm got the job done in a pinch but I am going to try
> diff tomorrow morning.  Thanks again for your help.
> 
> Sincerely,
> 
> Michael Lazin
> 
> On Thu, May 27, 2021, 6:01 PM Carlos M. Fernández <aremmes@gmail.com> wrote:
> 
> > This has worked for me before:
> >
> > diff -Nau first second | grep '^+'
> >
> > This assumes that first and second are sorted.
> >
> > On Thu, May 27, 2021, 17:37 Michael Lazin via plug <
> > plug@lists.phillylinux.org> wrote:
> >
> >> I used the sort command to make two lists.  One list has everything on
> >> the first list and more.  They are already alphabetically sorted.  I want
> >> to know what is on the second list that is not on the first list.  I am
> >> trying to use diff but perhaps there is a better way.   I tried awk and an
> >> ugly egrep and now I am giving up and asking for help.  Thanks for your
> >> time.
> >>
> >> Sincerely,
> >>
> >> Michael Lazin
> >>
> >> ___________________________________________________________________________
> >> Philadelphia Linux Users Group         --
> >> http://www.phillylinux.org
> >> Announcements -
> >> http://lists.phillylinux.org/mailman/listinfo/plug-announce
> >> General Discussion  --
> >> http://lists.phillylinux.org/mailman/listinfo/plug
> >>
> >

> ___________________________________________________________________________
> Philadelphia Linux Users Group         --        http://www.phillylinux.org
> Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
> General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug

#!/usr/bin/env perl
use strict;
use warnings;
use autodie;

my ($first, $second) = @ARGV;
my $fh;
open $fh, '<', $first;
my %h = map {$_ => 1} <$fh>;

open $fh, "<", $second;
while (<$fh>) {
    print unless defined $h{$_};
}
#!/usr/bin/env python
from sys import argv

(first, second) = argv[1:]
with open(first) as f:
    d = {line for line in f}

with open(second) as f:
    for line in f:
        if line not in d:
            print(line, end='')

Attachment: signature.asc
Description: PGP signature

___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug