programing

PowerShell - 고유 값 필터링

javajsp 2023. 10. 26. 20:44

PowerShell - 고유 값 필터링

아래 샘플과 유사한 정보를 포함하는 열이 있는 입력 CSV 파일이 있습니다.

805265
995874
805674
984654
332574
339852

앞의 두 문자를 기준으로 배열된 고유 값을 추출하고 싶으므로 위의 샘플을 사용하면 다음과 같은 결과를 얻을 수 있습니다.

80, 99, 98, 33

PowerShell을 사용하여 이를 달성하는 방법은 무엇입니까?

사용 및 매개변수-unique:

$values =
'805265',
'995874',
'805674',
'984654',
'332574',
'339852'

$values |
  Foreach-Object { $_.Substring(0,2) } |
  Select-Object -unique

int로의 변환이 필요한 경우에는 그냥 다음으로 캐스트합니다.[int]:

$ints =
  $values |
  Foreach-Object { [int]$_.Substring(0,2) } |
  Select-Object -unique

나는 cmdlet을 사용할 것입니다.group)의 경우:

가져오기-Csv foo.csv | 그룹 {$_.열 이름.부분 문자열(0, 2)}
카운트 이름 그룹----- ----                      -----2 80                        {805265, 805674}1 99                        {995874}1 98                        {984654}2 33                        {332574, 339852}

해시 테이블을 사용할 수 있습니다.

$values = @(805265, 995874, 805674, 984654, 332574, 339852)

$ht = @{}

$values | foreach {$ht[$_ -replace '^(..).+','$1']++}

$ht.keys

99
98
33
80

처음 두 문자를 포함하는 항목으로 새 배열을 만든 다음 을 사용하여 다음과 같은 고유 항목을 제공할 수 있습니다.

$newArray = @()
$csv = Import-Csv -Path C:\your.csv
$csv | % {
    $newArray += $_.YourColumn.Substring(0, 2)
}
$newArray | Select-Object -Unique

사용하는 대신 다른 옵션만 사용할 수 있습니다.Select-Object -uniqueGet-Unique cmdlet(또는 해당 별칭)을 사용합니다.gu; 자세한 설명은 여기 참조)를 참조하십시오(아래 설명 참조).

$values = @(805265, 995874, 805674, 984654, 332574, 339852)
$values | % { $_.ToString().Substring(0,2) } | Get-Unique
# Or the same using the alias
$values | % { $_.ToString().Substring(0,2) } | gu

언급URL : https://stackoverflow.com/questions/9825060/powershell-filtering-for-unique-values