2015-12-10 32 views
0

所以我在理解PowerShell中的一些cmdlet方面還是有點新的。我試圖從多個csv文件中獲取列的值,並將這些值放在1個文件的列中。例如從fileA.csv的column1導入值並將值導出到fileB.csv的column1

我有一個包含以下數據的文件。我們叫它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","","" 

任何想法如何與權力這樣做貝殼?

我猜一開始將是把兩個文件哈希表

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

我從這裏輸了...

UPDATE

我會當我有機會時測試答案。我最終用get-content去實現基於「,」分隔的值。我的一些未來物品不適用於這些物品的價值中有一個「,」。所以我想我需要暫時刪除csv文件中的頂部不行,並在頂部留下列名,這樣我就可以使用import-csv cmdlet。此刻,我的老闆給了我兩天時間寫一個文件,比較每個哈希表中具有不同值和不同列名的20多個行和10列20個不同哈希表的文件,他希望根據比較結果附加列。所以我有點急於完成這件事(2天內?這是正常的嗎?)。

+0

csv文件的格式應該是一致的,這意味着您不能在文件的開始部分有一些文本行,然後是標題。它可以沒有標題,但文件應該是一致的。分隔符可以是分號而不是逗號。 – Kiran

+0

對此有幫助嗎? 'Import-Csv -Path $ FileB -Header'FruitType','VegetableType','MeatType'| Export-Csv $ FileA -Append' – Kiran

+0

呃不是真的,用那個代碼它會在meattype列中添加icecream值。無論如何,你說我應該在腳本末尾添加列標題上方的行? PowerShell沒有辦法檢測任何行上的列並填寫這些列的值?我一直在考慮只使用python並且一起跳過powershells csv cmdlet。我已經在這裏工作了10個小時,而且我的老闆明天要完成這件事。 –

回答

0

這將僅將屬於fileB的列項導入到fileA中。 其他列值(vegtype,肉類型)將爲空白。

import-csv $FileB | ForEach-Object { 

    New-Object psobject -Property @{ 

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

我認爲,一個更簡單的

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

將使。

如果需要,您可以調整-DelimiterImport-Csv

不要忘記使用-NoTypeInformationExport-Csv

相關問題