Quoth Chad Perrin on Saturday, 07 May 2011: > On Sat, May 07, 2011 at 02:09:26AM +0200, Rolf Nielsen wrote: > > > > I have two text files, quite extensive ones. They have some lines in > > common and some lines are unique to one of the files. The lines that do > > exist in both files are not necessarily in the same location. Now I need > > to compare the files and output a list of lines that exist in both > > files. Is there a simple way to do this? diff? awk? sed? cmp? Or a > > 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 = File.open("foo.txt").readlines.map {|l| l.chomp}; \ > bar = 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 > > -- > Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]
You could even just output the intersection of the two lists: ruby -e 'puts File.open("foo.txt").readlines.map {|l| l.chomp} & \ File.open("bar.txt").readlines.map {|l| l.chomp }' And to comply with DRY: ruby -e 'def fl(f) File.open(f).readlines.map {|l| l.chomp}; end; \ puts fl("foo.txt") & fl("bar.txt")' -- .O. | Sterling (Chip) Camden | http://camdensoftware.com ..O | sterl...@camdensoftware.com | http://chipsquips.com OOO | 2048R/D6DBAF91 | http://chipstips.com
pgpMqeRRzE65f.pgp
Description: PGP signature