将两个CSV文件合并为一个

时间:2016-07-21 06:39:08

标签: csv powershell

我有两个没有任何唯一标识符的CSV文件。两个文件的行数始终相同。我想合并它们(第二个CSV作为第一个CSV中的附加列)。

file1.csv的内容:

Server,Info  
server1,item1  
server1,item2  
server1,item3  
server2,item1  
server2,item2  
server2,item3  
server3,item1  
server3,item2  
server3,item3  

file2.csv的内容:

Items,ColumnA,ColumnB,ColumnC  
item#1:,aa,jj,ss  
item#2:,bb,kk,tt  
item#3:,cc,ll,uu  
item#1:,dd,mm,vv  
item#2:,ee,nn,ww  
item#3:,ff,oo,xx  
item#1:,gg,pp,yy  
item#2:,hh,qq,zz  
item#3:,ii,rr,ab  

期望输出csv文件:

Server,Info,Items,ColumnA,ColumnB,ColumnC  
server1,item1,item#1:,aa,jj,ss  
server1,item2,item#2:,bb,kk,tt  
server1,item3,item#3:,cc,ll,uu  
server2,item1,item#1:,dd,mm,vv  
server2,item2,item#2:,ee,nn,ww  
server2,item3,item#3:,ff,oo,xx  
server3,item1,item#1:,gg,pp,yy  
server3,item2,item#2:,hh,qq,zz  
server3,item3,item#3:,ii,rr,ab 

我在网上搜索密集,但找不到任何解决方案......如果有人能在这里给我一些答案,我真的很感激...

1 个答案:

答案 0 :(得分:0)

您可以使用Get-Content cmdlet读取这两个CSV文件,使用for循环对其进行迭代,并使用格式字符串将它们连接在一起。最后,使用Out-File cmdlet写回新文件:

$file1 = Get-Content 'Path_to_file1.csv'
$file2 = Get-Content 'Path_to_file2.csv'

$content = for ($i = 0; $i -lt $file1.Length; $i++)
{
    '{0},{1}' -f $file1[$i].Trim(), $file2[$i].Trim()
} 

$content | out-file 'Path_to_file3.csv'