Powershell counting same values from csv

后端 未结 2 1803
半阙折子戏
半阙折子戏 2021-01-27 17:03

Using PowerShell, I can import the CSV file and count how many objects are equal to \"a\". For example,

@(Import-csv location | where-Object{$_.id -eq \"a\"}).Co         


        
相关标签:
2条回答
  • 2021-01-27 17:29

    So I made a dummy file that contains 5 columns of people names. Now to show you how the process will work I will show you how often the text "Ann" appears in any field.

    $file = "C:\temp\MOCK_DATA (3).csv"
    gc $file | %{$_ -split ","} | Group-Object | Where-Object{$_.Name -like "Ann*"}
    

    Don't focus on the code but the output below.

    Count Name  Group                          
    ----- ----  -----                          
        5 Ann   {Ann, Ann, Ann, Ann...}        
        9 Anne  {Anne, Anne, Anne, Anne...}    
       12 Annie {Annie, Annie, Annie, Annie...}
       19 Anna  {Anna, Anna, Anna, Anna...} 
    

    "Ann" appears 5 times on it's own. However it is a part of other names as well. Lets use a simple regex to find all the values that are only "Ann".

    (select-string -Path 'C:\temp\MOCK_DATA (3).csv' -Pattern "\bAnn\b" -AllMatches | Select-Object -ExpandProperty Matches).Count
    

    That will return 5 since \b is for a word boundary. In essence it is only looking at what is between commas or beginning or end of each line. This omits results like "Anna" and "Annie" that you might have. Select-Object -ExpandProperty Matches is important to have if you have more than one match on a single line.

    Small Caveat

    It should not matter but in trying to keep the code simple it is possible that your header could match with the value you are looking for. Not likely which is why I don't account for it. If that is a possibility then we could use Get-Content instead with a Select -Skip 1.

    0 讨论(0)
  • 2021-01-27 17:33

    Try cycling through properties like this:

    (Import-Csv location | %{$record = $_; $record | Get-Member -MemberType Properties | 
        ?{$record.$($_.Name) -eq 'a';}}).Count
    
    0 讨论(0)
提交回复
热议问题