2015-03-12 4 views
1

У меня есть два CSV-файла и не имеют заголовков. Оба файла CSV имеют одинаковое количество строк в них. Вот пример:Объединить два файла CSV без заголовков в Powershell

csv1.csv:
1,2
3,4
5,6

csv2.csv:
а, б
C, D
E, F

Я хотел бы выход, чтобы выглядеть следующим образом:
1,2, а, б
3,4, в, г
5,6, e, f

Я не хочу добавлять заголовки или что-то в этом роде. Я просто хочу в основном брать столбцы 1 и 2 из csv2.csv и вставлять их в столбцы 3 и 4 из csv1.csv или просто экспортировать в комбинированный csv.

Любая помощь приветствуется. Благодаря!

+0

Я просто заметить мое форматирование изменилось. Строки csv1 и csv2 должны быть только двух столбцов, поэтому 1,2 находятся на первой линии, 3,4 - на линии два. То же самое для csv2. Комбинированный выход будет иметь ширину в 4 столбца. – firestarter247

ответ

0

Easy достаточно просто игнорировать тот факт, что они представляют собой файлы CSV, для цикла For, основанного на подсчете строк, и присоединяются к каждой строке с запятой.

$CSV1 = Get-Content C:\Path\To\File1.csv 
$CSV2 = Get-Content C:\Path\To\File2.csv 
For($i=0;$i -lt $csv1.count;$i++){ 
    $CSV1[$i],$CSV2[$i] -join ','|Out-File C:\Path\to\NewFile.CSV 
} 

Это должен выводить файл по желанию:
1,2, а, б
3,4, C, D
5,6, E, F

+0

Большое спасибо! Я был так повешен, что он был csv и использовал import-csv, чтобы манипулировать! Единственное, что мне пришлось добавить, это «-append» в out-file. – firestarter247

0

Если вы хотите, чтобы сделать это очень просто и добавить второй CSV к концу первого вы могли бы сделать что-то вроде этого

$csv1 = Get-Content C:\path\to\first.csv 
$csv2 = Get-Content C:\path\to\second.csv 

"$csv1,$csv2" | Add-Content C:\path\to\third.csv 

Выход woud выглядеть что-то вроде

a,b,c,d,e,f,g,h,i,1,2,3,4,5,6,7,8,9 
+0

Благодарим за отзыв. Не совсем то, что я собираюсь, хотя. Это дает мне один файл строки. Мне нужен файл размером 4 строки. – firestarter247

0

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

$lines1 = Get-Content "File1.csv" 
$lines2 = Get-Content "File2.csv" 
$destination = "Combined.csv" 

# Make sure the destination file doesn't already exist 
Remove-Item $destination 

$length = [Math]::Min($lines1.Length, $lines2.Length) 
for ($index = 0; $index -lt $length; $index++) 
{ 
    # Append rows 
    Add-Content $destination ($lines1[$index] + ", " + $lines2[$index]) 
} 
0

Я знаю, что вы просили решение Powershell, но малоизвестный факт, что вы можете объединить файлы в DOS, как это:

COPY File.CSV + File2.CSV OutputFile.CSV

Смежные вопросы