【问题标题】:Compare 2 csv to create list of unique items in Powershell比较 2 csv 以在 Powershell 中创建唯一项目列表
【发布时间】:2014-08-22 13:53:02
【问题描述】:

我有 2 个 csv 文件,需要创建第三个。

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 行之后添加了一个 break:outside 行,但它只多次列出了 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.

建议?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    对于$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
    

    【讨论】:

    • 谢谢 - 这让我朝着正确的方向前进。这一直有效,直到我在 csv_1 中遇到不在 csv_2 中的条目。 csv_3 文件被构建到 $u2 为空条目的地步。我将$users += $u2 更改为if ($u2){$users += $u2},它就像一个冠军。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多