我有2个csv文件,需要创建第3个。
csv_1 (仅限1列)
USERNAME
guy1
guy2
guy3
csv_2
"ID","USERNAME","GROUPU"
"1","guyA","Default"
"2","guy1","Default"
"3","guyB","Default"
"4","guy3","Default"
"5","guyC","Default"
对于比较这两个表的输出,我希望看到:
USERNAME,ID
guy1,2
guy3,4
我尝试了这个并且它倾倒了太多数据(多次列出所有条目)
$file1 = Import-Csv csv_1.csv
$file2 = Import-Csv csv_2.csv
foreach ($line in $file1){
$U1 = $line.User
foreach ($line in $file2)
$U2 = $line.USERNAME
$I2 = $line.ID
If ($U1 = $U2){
$x = $U2+","+$I2
ac temp.csv$x
}
}
}
我在ac temp.csv $ x行之后添加了一个中断:外线但是它只多次列出了1个条目。
我也尝试这个(基于this条目):
$file1 = Import-Csv csv_1.csv
$file2 = Import-Csv csv_2.csv
ForEach($Record in $file1){
$MatchedValue = (Compare-Object $file2 $Record -Property "USERNAME" -IncludeEqual -ExcludeDifferent -PassThru).value
$Record = Add-Member -InputObject $Record -Type NoteProperty -Name "SQLID" -Value $MatchedValue
}
$file1 #|Export-Csv ".\Combined.csv" -NoTypeInformation
但是在SQLID列中没有得到任何内容,它包含了$ file1中不在$ file2中的一些值。我认为缺少SQLID值是因为我需要在那里添加一个变量(-value只是$ matchedValue,它只是来自$ file1的行),但我不确定如何从正确的变量中获取变量记录在$ file2中。
建议?
答案 0 :(得分:0)
对于$file1
中的每个条目,请测试$file2
中的条目是否具有相同的USERNAME属性值。如果是,请选择USERNAME和ID属性,并将条目添加到可以写回最终csv文件的集合中:
$file1 = Import-Csv .\csv_1.csv
$file2 = Import-Csv .\csv_2.csv
$users = @()
foreach($u in $file1)
{
$u2 = $file2 |Where-Object {$_.USERNAME -eq $u.USERNAME}|Select USERNAME,ID -First 1
if($u2)
{ $users += $u2 }
}
$users|Export-Csv -Path .\csv_3.csv -NoTypeInformation -Force