Импорт столбца из нескольких CSV в новый CSV PowerShell - PullRequest
0 голосов
/ 17 марта 2019

Привет, я новичок и очень плохо борюсь с PowerShell.

У меня есть 5 CSV-файлов, каждый из которых имеет 1 столбец.Я хочу взять столбец из каждого CSV-файла и поместить их в новый CSV-файл, а каждый столбец из 5 CSV-файлов взять в качестве отдельного столбца в новом CSV

, чтобы он стал

temp1 | temp2 | temp3 | temp4 | temp5|

Может кто-нибудь помочь мне с этим

1 Ответ

0 голосов
/ 17 марта 2019

Это должно работать.Это данные через запятую.Я не мог сказать, хотите ли вы разделить трубу на основе вашего вопроса или это было для демонстрационных целей.Я также не мог сказать, была ли временная номенклатура новым значением столбцов, которые вы хотели, или это было уже имя каждого столбца в каждом файле.Предполагается, что в ваших данных нет запятых.

$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
...