Я сравниваю два больших CSV-файла с разделителями-запятыми File1.csv
и File2.csv
с использованием Perl-модуля Text::Diff
.Программа Perl вызывается из файла .bat
, и я помещаю результат в третий файл Diff.csv
Perl
#!/usr/bin/env perl
use strict;
use warnings;
use Text::Diff;
my $diffs = diff $ARGV[0] => $ARGV[1];
$diffs =~ s/^(?:[^\n]*+\n){2}//;
$diffs =~ s/^(?:[\@ ][^\n]*+)?+\n//mg;
print $diffs;
Вот как я называю скрипт Perl:
perl "C:\diffBetweenTwoFiles.pl" "C:\File1.csv" "C:\File2.csv" > "C:\Diff.csv"
Один из столбцов в CSV-файле - Name
.
В настоящее время в результате отображаются все строки, значения которых в любых столбцах изменяются, но я хочу только перечислить новые Name
строки.
Например:
File1.csv
"Name","DOB","Address"
"One","1/1/01","5 Stock Rd"
"Two","1/2/02","1 Research Rd"
File2.csv
"Name","DOB","Address"
"One","1/1/01","5 Stock Rd"
"Two","1/2/02","111 Research Rd"
"Three","1/3/03","3 Bold Rd"
В настоящее время список результатов этих (он включает в себя "Два ", потому что его адрес изменился):
"Name","DOB","Address"
"Two","1/2/02","111 Research Rd"
"Three","1/3/03","3 Bold Rd"
Но я только хочу, чтобы результат перечислил новое" Имя "следующим образом:
"Name","DOB","Address"
"Three","1/3/03","3 Bold Rd"
Как я могу сделать это в Perlили скрипт Powershell?