2016-07-20 13 views
0

2つのCSVを比較しようとしています。今は、検証のために変数$testと同じに設定しています。最初の行は動作します。私は分かりやすくするためにそれを含めました。Powershellで2つのCSVを比較して重複を取り除くためのネストループ

#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}} 

私の最終目標は、(最初​​の行に完了)二つのリスト間の一致を見つけるの両方からそれらを削除し、その後、周りの数行を切り替えて試合の第2のセットを見つけることです。

答えて

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 } 
+0

おかげで、それは多くの簡単かつ作品です! – Errorum

関連する問題