2016-09-17 11 views
1

からの一致に基づいて2つのCSVをから新しい行を作成します。私はPowerShellをして次の操作を実行しようとしている1列

  1. はCSV#2に対して、CSV#1の1列から特定の値を比較してください。

  2. それが特定の値に一致した場合、またはヘッダなしで新しいCSVファイルに1つの新しい行にその試合から(それが重複する値を防ぐために、一致したことを、その値を除く)行全体を組み合わせる

例えば

:列 '動物' に一致

CSV#1:

animal, name, age 
dog, spot, 5 
cat, whiskers, 3 
iguana, lizzy, 1

CSV#2:

animal, color, eyes 
fish, yellow, 2 
dog, brown, 2

結果:

dog, spot, 5, brown, 2

下に新しいファイルCSV#3私はCSV#1のImport-Csvてみましたが、私はif -matchステートメントを使用してCSV#2を反復処理の問題...

答えて

0
を持っています

最初のCSVを一度繰り返して、2番目のCSVに同じ動物が含まれているかどうかを確認してください。その場合、所望の特性を有する新しいPsCustomObjectを作成し、最終的にはCSVにオブジェクトを変換する:

$csv1 = 
@' 
animal, name, age 
dog, spot, 5 
cat, whiskers, 3 
iguana, lizzy, 1 
'@ | ConvertFrom-Csv 

$csv2 = 
@' 
animal, color, eyes 
fish, yellow, 2 
dog, brown, 2 
'@ | ConvertFrom-Csv 

$csv1 | ForEach-Object { 
    $csv1Entity = $_ 
    $csv2Entity = $csv2 | where animal -eq $csv1Entity.animal 
    if ($csv2Entity) 
    { 
     [PSCustomObject]@{ 
      animal = $csv1Entity.animal 
      name = $csv1Entity.name 
      age = $csv1Entity.age 
      color = $csv2Entity.color 
      eyes = $csv2Entity.eyes 
     } 
    } 
} | ConvertTo-Csv -NoTypeInformation 

出力:

"animal","name","age","color","eyes" 
"dog","spot","5","brown","2" 
関連する問題