2017-04-20 3 views
-2

Verwenden Sie Powershell zum ersten Mal. Ich habe 2 CSV-Dateien. Jede hat eine unterschiedliche Anzahl von Spalten und eine unterschiedliche Anzahl von Einträgen und nicht in der gleichen Reihenfolge.Vergleichen Sie zwei CSV-Dateien mit verschiedenen Spaltennummern auf Basis einer gemeinsamen Spalte

Hier sind einige Beispiele für die ersten paar Zeilen

File1.csv

Name,Alias,Category 
    Comdty,CONTRACT FOR DIFFERENCE,Future 
    Comdty,Calendar Spread Option,Future 
    Corp,Bond,FixedIncome 
    Corp,EURO-DOLLAR,FixedIncome 
    Corp,FLOORSPREAD,FixedIncome 
    Corp,FRA,FixedIncome 

File2.CSV

Alias,Category 
EURO-DOLLAR,FixedIncome 
Bond,FixedIncome 
Preferred,Equity 

ich das vergleichen müssen Dateien mit PowerShell-Skript auf der Grundlage der Alias-Spalte, und zeigen die übereinstimmenden Werte zusammen und zeigen leer, wo der Wert für keine Datei vorhanden ist. Etwas wie:

Alias,Alias, Category ------------------------- MacthCase 
    ___,CONTRACT FOR DIFFERENCE,Future ------------ false 
    ___,Calendar Spread Option,Future ------------- false 
    Bond,Bond,FixedIncome ------------------------- true 
    EURO-DOLLAR,EURO-DOLLAR,FixedIncome ----------- true 
    ___,FLOORSPREAD,FixedIncome ------------------- false 
    ___,FRA,FixedIncome --------------------------- false 
    Preferred,___,Equity -------------------------- false 

Antwort

1

versuchen diese

#import files with select columns 
$file1=import-csv C:\temp\file1.csv | select Alias,Category, @{N="file";E={"file1"}} 
$file2=import-csv C:\temp\file2.csv | select Alias,Category, @{N="file";E={"file2"}} 

#merge into one list object 
$allfile=$file1 
$allfile+=$file2 

#group by Alias and build objects result 
$allfile | group Alias | foreach{ 

    if ($_.Count -ge 2) 
    { 
     [pscustomobject]@{Alias1=$_.Name;Alias2=$_.Name;Categorie=$_.Group.Category[0];MatchCase=$true} 
    } 
    else 
    { 
     if ($_.Group.file -eq "file1") 
     { 
      [pscustomobject]@{Alias1="____";Alias2=$_.Name;Categorie=$_.Group.Category;MatchCase=$false} 
     } 
     else 
     { 
      [pscustomobject]@{Alias1=$_.Name;Alias2="____";Categorie=$_.Group.Category;MatchCase=$false} 
     } 
    } 


} 
+0

Kategorie nicht geladen werden kann „' Kann nicht Index in eine Null array.'“für wahre Werte und es kommen leer für alle falschen Werte. Es vergleicht die Dateien, aber das Ergebnis kommt sequentiell nicht in Tabellenform. Können Sie bitte helfen. –

Verwandte Themen