在Powershell中合并两个没有标题的CSV文件

时间:2015-03-12 23:40:11

标签: powershell export-to-csv

我有两个CSV文件,但都没有标题。两个CSV文件中的行数相同。这是一个例子:

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

csv2.csv:
A,B
C,d
e,f

我希望输出看起来像这样:
1,2,A,B
3,4,C,d
5,6,e,f

我不想添加标题或类似内容。我只想基本上从csv2.csv中获取第1列和第2列,并将它们粘贴到csv1.csv的第3列和第4列,或者只是导出到组合的csv。

感谢任何帮助。谢谢!

4 个答案:

答案 0 :(得分:0)

如果你想简单地做到这一点并将第二个csv添加到第一个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

输出看起来像

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

答案 1 :(得分:0)

很简单,只需忽略它们是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,A,B
3,4,C,d
5,6,E,F

答案 2 :(得分: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])
}

答案 3 :(得分:0)

我知道你要求一个powershell解决方案但是一个鲜为人知的事实是你可以在DOS中合并文件:

COPY File.CSV + File2.CSV OutputFile.CSV