【问题标题】:Comparing values with Compare-Object使用 Compare-Object 比较值
【发布时间】:2022-11-14 11:30:11
【问题描述】:

有一堆来自 csv 文件的值,列如下所示:

**name**
shouston
cgonzalez
bbrown
hlader
kpesavento
jbloom
polson
bcharlow
bcharlow
bkalt

需要找到重复项并修改它们。我尝试使用比较对象

foreach ($line in $inputFile) {
    $name = $line.name
    $line.name = $text.ToTitleCase($name)
    $firstName = $line.name.split(" ")[0]
    $lastName = $line.name.split(" ")[1]
    $newEmail = ($firstName[0] + $lastName).toLower()

    if ( -not (Compare-Object -ReferenceObject $newEmail -DifferenceObject $newEmail -Property email -IncludeEqual | Where-Object { $_.SideIndicator }) ) {
        "some modify"
    }
    else {
        "again modify"
    }

但它没有像我预期的那样工作 - 找到一个重复的值,然后。 谁能帮助我 - 我需要如何修改脚本?

【问题讨论】:

    标签: powershell compare compareobject


    【解决方案1】:

    您可以使用 Group-Object 查看重复项,因此可以执行以下操作:

    $val=@(
    '**name**',
    'shouston',
    'cgonzalez',
    'bbrown',
    'hlader',
    'kpesavento',
    'jbloom',
    'polson',
    'bcharlow',
    'bcharlow',
    'bkalt'
    )
    
    $val | Group-Object
    

    会给你一个给定值被看到的次数。如果您想查看前 3 名,您可以通过管道对其进行排序和选择

    $val | Group-Object -NoElement | Sort-Object Count -Descending | Select-Object -First 3
    
    Count Name                     
    ----- ----                     
        2 bcharlow                 
        1 **name**                 
        1 shouston 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2019-03-27
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多