Public Scratchpad | Download, Select Code To D/L |
Set intersection and complement one-liners.
$ cat A; echo '* * * * *'; cat B apple cherry carrot lime * * * * * lime orange banana
A ∩ B
Intersection of A and B.
$ perl -e 'open F,$ARGV[0] or die;shift;my %set = map {$_ => 1 } <>; f +or (<F>) {print if $set{$_}};' A B lime
B / A
Complement of B relative to A.
$ perl -e 'open F,$ARGV[0] or die;shift;my %set = map {$_ => 1 } <>; f +or (<F>) {print unless $set{$_}};' A B apple cherry carrot
The first argument is always set A. The union of all the other arguments is set B. Thus:
$ cat C grape apricot cherry $ perl -e 'open F,$ARGV[0] or die;shift;my %set = map {$_ => 1 } <>; f +or (<F>) {print unless $set{$_}};' A B C apple carrot $ perl -e 'open F,$ARGV[0] or die;shift;my %set = map {$_ => 1 } <>; f +or (<F>) {print if $set{$_}};' A B C cherry lime