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

Merge two CSV files with no headers in Powershell

我有两个 CSV 文件,但都没有 headers。两个 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

我不想添加 headers 或类似的内容。我只想从 csv2.csv 中取出第 1 列和第 2 列并将它们粘贴到 csv1.csv 的第 3 列和第 4 列,或者只是导出到组合的 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

很简单,忽略它们是 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

也许是这样的 - 我已经让它只包含两个文件中都存在的行,但您可能有不同的要求。

$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])
}

我知道您需要一个 powershell 解决方案,但一个鲜为人知的事实是您可以像这样在 DOS 中合并文件:

COPY File.CSV + File2.CSV OutputFile.CSV