从fileA.csv中的column1导入值,并将值导出到fileB.csv中的column1

时间:2015-12-10 03:15:55

标签: powershell powershell-v3.0

所以我在理解powershell中的一些cmdlet方面仍然有点新鲜。我试图从多个csv文件中获取列的值,并将这些值放在1个文件的列中。例如

我有一个包含以下数据的文件。我们称之为FileA.csv:

SomeLineOfNotes
SomeLineOfNotes2
SomeLineOfNotes3
SomeLineOfNotes4
SomeLineOfNotes5
SomeLineOfNotes6
"FruitType","VegetableType","MeatType"

现在我想从FileB.csv导入水果的值: 注意:对于","将很难使用分隔符。因为某些值有" "

"FruitFav","DrinkFav", "DairyFav"
"Banana","Soda","IceCream"
"Mango","EnergyDrinks,Monster","Yogurt"
"Peach","Slurpy","Cheese"

现在FileA.csv应该包含以下内容:

SomeLineOfNotes
SomeLineOfNotes2
SomeLineOfNotes3
SomeLineOfNotes4
SomeLineOfNotes5
SomeLineOfNotes6
"FruitType","VegetableType","MeatType"
"Banana","",""
"Mango","",""
"Peach","",""

有关如何使用PowerShell执行此操作的任何想法吗?

我猜测开始就是将两个文件都放在哈希表中

$FileAcontents = Import-Csv $FileA -Header "FruitType","VegetableType","MeatType"
$FileBcontents = Import-Csv $FileB -Header "FruitFav","DrinkFav", "DairyFav"

我从这里迷路了......

更新

当我有机会时,我会测试答案。我最终得到了get-content并根据","的分离实现了这些值。我未来的一些项目无法使用,这些项目有","在价值中。所以我想我需要暂时删除csv文件中的顶部不行,并在顶部留下列名,以便我可以使用import-csv cmdlet。目前,我的老板给了我两天的时间来编写一个文件,比较20个不同的哈希表,每个哈希表中有超过200k行和10列,具有不同的值和不同的列名,并且他希望根据比较添加列。所以我有点急于完成这项工作(在2天内?这是正常的吗?)。

2 个答案:

答案 0 :(得分:0)

这将仅将属于fileB的列项导入fileA。 其他列值(vegtype,meattype)将为空白。

import-csv  $FileB | ForEach-Object {

    New-Object psobject -Property @{

     FruitType =  $_.FruitType 
     VegetableType = ''
     MeatType = ''
    }
} | Select-Object FruitType,VegetableType,MeatType | Export-Csv $FileA -Append

答案 1 :(得分:0)

我认为更简单

Import-Csv $FileB -Delimiter "," |
    Select-Object FruitType, VegetableType, MeatType |
    Export-Csv $FileA -NoTypeInformation

会成功。

如果需要,您可以调整-Delimiter Import-Csv

请勿忘记-NoTypeInformation使用Export-Csv