для perl'а быстренько набросал:
use strict;
use warnings;
use Array::Utils qw(:all);
open(my $fh_m, '<', 'master.txt') or
die "Не смог открыть файл :(";
open(my $fh_f, '<', 'file.txt') or
die "Не смог открыть файл :(";
open(my $fh_n, '>', 'new.txt') or
die "Не смог открыть файл :(";
open(my $fh_nm, '>', 'newmaster.txt') or
die "Не смог открыть файл :(";
my @m = map {s/\r?\n?$//r} <$fh_m>;
my @f = map {s/\r?\n?$//r} <$fh_f>;
my @diff = array_minus(@f, @m);
foreach(@m) {
print $fh_nm "$_\n";
}
foreach(@diff) {
print $fh_n "$_\n";
print $fh_nm "$_\n";
}
perl под windows можно взять
осюда или
отсюда