Powershell针对Hashtable搜索CSV

时间:2014-01-27 17:06:18

标签: powershell csv hashtable

这看起来非常基本但我无法在任何地方找到或弄清楚。

我有2个CVS文件,我想导入一个并将ID列更改为另一个.csv中包含的相关字符串,然后将结果导出到文件中。我一直在试验哈希表,但似乎无法弄明白。

电流:

Main.csv                                      Reference.csv       
Type_ID    Category_ID     Location_ID        Type_ID     Type 
1          11              111                1           Tablet
2          22              222                2           Laptop
3          33              333                3           Workstation

希望阅读:

Type        Category_ID     Location_ID        
Tablet      11              111                
Laptop      22              222               
Workstation 33              333

这是我正在使用的代码:

#import file as hash table
$t = Import-Csv -Path .\Reference.csv -Header  "column1","column2"
$HashTable = @{}
foreach($r in $t)
{
    Write-Host $r.column1 $r.column2
    $HashTable[$r.column1] = $r.column2
}
$HashTable

#compare ID and assign string
 ForEach($_.Type_ID in (Import-CSV .\Main.csv)){
    If($HashTable.ContainsKey($_.column1)){
      $_.column1=$HashTable[$_.column2]
      }
    $_
    } | Export-Csv .\it_works.csv

非常感谢任何建议

1 个答案:

答案 0 :(得分:0)

首先,您可以创建一个Hashtable:

Import-Csv C:\dumy\b.csv | % {$t=@{}}{$t+=@{$_.type_id=$_.type}}

然后:

Import-Csv C:\dumy\a.csv | select @{name = "Type"; expression={$t[$_.type_id]}},Category_ID,Location_ID  | export-csv 'c:\dumy\c.csv'