Вложени цикли за сравняване на два CSV файла в Powershell и премахване на дубликати

Опитвам се да сравня два CSV файла, след което да премахна цели обекти от единия, ако името на реда съвпада с другия. В момента го задавам равно на променливата $test за проверка. Първият ред работи; Включих го само за по-голяма яснота.

#Compare and Output Perfect Matches
    $perfect=compare-object (import-csv $bpa) (import-csv $peak) -Property "Op_Area","Line_Name","From_St","From_Nd","To_St","To_Nd" -IncludeEqual -ExcludeDifferent 
#Remove Perfect Matches from Original Two Lists
    $test=import-csv $peak|%{if($_.line_name -eq $perfect|%{$_.line_name}){Remove-Item}}

Крайната ми цел е да намеря съвпадения между двата списъка (Готово на първия ред), да ги премахна и от двата, след това да превключа няколко реда и да намеря втори набор от съвпадения.


person Errorum    schedule 20.07.2016    source източник


Отговори (1)


Използвайте Select-Object -ExpandProperty Line_Name, за да вземете само Line_Name стойностите от съвпадащите записи:

# Store the $peak csv in a variable, we'll need it later
$peakData = Import-Csv $peak
$perfect = Compare-Object (Import-Csv $bpa) $peakData -Property "Op_Area","Line_Name","From_St","From_Nd","To_St","To_Nd" -IncludeEqual -ExcludeDifferent |Select-Object -ExpandProperty Line_Name

След това използвайте Where-Object, за да филтрирате тези редове:

$test = $peakData |Where-Object { $perfect -notcontains $_.Line_Name }
person Mathias R. Jessen    schedule 20.07.2016