Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 May 2011 06:56:45 -0600
From:      Chad Perrin <perrin@apotheon.com>
To:        FreeBSD <freebsd-questions@freebsd.org>
Subject:   Re: Comparing two lists
Message-ID:  <20110507125645.GA46576@guilt.hydra>
In-Reply-To: <4DC48DB6.8030907@lazlarlyricon.com>
References:  <4DC48DB6.8030907@lazlarlyricon.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--yrj/dFKFPuw6o+aM
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, May 07, 2011 at 02:09:26AM +0200, Rolf Nielsen wrote:
>=20
> I have two text files, quite extensive ones. They have some lines in=20
> common and some lines are unique to one of the files. The lines that do=
=20
> exist in both files are not necessarily in the same location. Now I need=
=20
> to compare the files and output a list of lines that exist in both=20
> files. Is there a simple way to do this? diff? awk? sed? cmp? Or a=20
> combination of two or more of them?

Disclaimer:

This should probably be done with Unix command line utilities, and most
likely by way of comm, as others explain here.  On the other hand, the
others explaining that have done an admirable job of giving you some
pretty comprehensive advice on that front before I got here, so I'll give
you an alternative approach that is probably *not* how you should do it.

Alternative Approach:

You could always use a programming language reasonably well-suited to
admin scripting.  The following is a one-liner in Ruby.

    ruby -e 'foo =3D File.open("foo.txt").readlines.map {|l| l.chomp}; \
    bar =3D File.open("bar.txt").readlines.map {|l| l.chomp }; \
    foo.each {|num| puts num if bar.include? num }'

Okay, so I'm kinda stretching the definition of "one-liner" if I'm
using semicolons and escaping newlines.  If you really want to cram it
all into one line of code, you could do something like replace the
semicolons (and newline escapes) with the "and" keyword in each case.

    http://pastebin.com/nPR42760

--=20
Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]

--yrj/dFKFPuw6o+aM
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEARECAAYFAk3FQY0ACgkQ9mn/Pj01uKW4RwCg79+pYycRhCaURcDCa0u9epJ/
mFUAoJfqHPyJ/B8SiwuLBs3SzADxe5nE
=rNzZ
-----END PGP SIGNATURE-----

--yrj/dFKFPuw6o+aM--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110507125645.GA46576>