嗨,我是新手,在Powershell上确实很挣扎。
我有5个csv文件,所有文件都有1列。我想从每个csv文件中提取该列并将其放入新的csv文件中,并从5个csv文件中提取每个列作为新csv中的单独列
要成为这个
temp1 | temp2 | temp3 | temp4 | temp5|
有人可以帮我吗
答案 0 :(得分:0)
这应该有效。它是逗号分隔的数据。我无法确定您是否要根据自己的问题用竖线分隔,还是出于演示目的。我也无法确定临时命名法是您想要的列的新值,还是已经是每个文件中每个列的名称。假设您的数据中没有逗号。
$CSV1 = Get-Content csv1.csv
$CSV2 = Get-Content csv2.csv
$CSV3 = Get-Content csv3.csv
$CSV4 = Get-Content csv4.csv
$CSV5 = Get-Content csv5.csv
$MostRows = ($CSV1.count,$CSV2.count,$CSV3.count,$CSV4.count,$CSV5.count | Sort-Object -Descending)[0]
$Output = For ($i = 0; $i -lt $MostRows; $i++) {
$CSV1[$i],$CSV2[$i],$CSV3[$i],$CSV4[$i],$CSV5[$i] -Join ","
}
$Output | Set-Content NewCSV.csv
这里是使用对象并保护数据中逗号的替代方法。这将使用您的临时术语作为列名。可以通过更新哈希表中的名称将其手动调整为所需的任何内容。
$CSV1 = Get-Content csv1.csv
$CSV2 = Get-Content csv2.csv
$CSV3 = Get-Content csv3.csv
$CSV4 = Get-Content csv4.csv
$CSV5 = Get-Content csv5.csv
$MostRows = ($CSV1.count,$CSV2.count,$CSV3.count,$CSV4.count,$CSV5.count | Sort-Object -Descending)[0]
$Output = For ($i = 0; $i -lt $MostRows; $i++) {
[pscustomobject][ordered]@{"temp1"=$CSV1[$i];"temp2"=$CSV2[$i];"temp3"=$CSV3[$i];"temp4"=$CSV4[$i];"temp5"=$CSV5[$i]}
}
$Output | Export-CSV NewCSV.csv -notypeinformation