PowerShell 배열에서 중복 값을 제거하는 방법
-
Select-Object
를 사용하여 PowerShell 배열에서 중복 값 제거 -
Sort-Object
를 사용하여 PowerShell 배열에서 중복 값 제거 -
Get-Unique
를 사용하여 PowerShell 배열에서 중복 제거 -
Hashtable
을 사용하여 PowerShell 배열에서 중복 제거 - 결론

PowerShell에서 배열은 동일한 유형의 항목 또는 다른 유형의 항목의 컬렉션을 저장할 수 있는 기본 데이터 구조입니다. 다양한 스크립팅 시나리오에서 배열에서 중복 항목을 제거해야 할 필요성을 느낄 수 있습니다.
이 튜토리얼에서는 PowerShell 배열에서 중복 항목을 제거하는 다양한 방법을 소개합니다.
Select-Object
를 사용하여 PowerShell 배열에서 중복 값 제거
Select-Object
cmdlet은 객체 또는 객체 집합의 지정된 속성을 선택하는 데 사용됩니다. 배열의 지정된 위치에서 고유한 객체를 선택할 수도 있습니다.
-Unique
매개변수는 동일한 속성과 값이 있는 객체가 있을 경우 단일 멤버만 선택되도록 지정합니다. 이는 대소문자를 구분하므로 문자 대소문자만 다른 문자열도 고유한 값으로 간주됩니다.
우리는 서로 다른 대소문자를 가진 중복 항목이 있는 배열 $data
를 생성했습니다.
$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
다음 예제는 배열에서 고유한 값을 선택하고 이를 $data
변수에 저장합니다. 결과적으로 중복 요소는 배열에서 제거됩니다.
명령:
$data = $data | Select-Object -Unique
$data
출력:
powershell
arrays
Arrays
PowerShell
대소문자만 다른 "PowerShell"
은 제거되지 않고 "powershell"
문자열은 제거됩니다.
Sort-Object
를 사용하여 PowerShell 배열에서 중복 값 제거
Sort-Object
cmdlet은 객체를 속성 값을 기준으로 오름차순 또는 내림차순으로 정렬합니다. Sort-Object
를 사용하여 객체에서 중복을 제거하기 위해 -Unique
매개변수를 사용할 수 있습니다.
하지만 이는 대소문자를 구분하지 않으므로 문자 대소문자만 다른 문자열도 동일한 것으로 간주됩니다. 다음 예제는 배열에서 중복 항목을 제거하고 변수 $a
에 저장합니다.
명령:
$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a
출력:
Arrays
PowerShell
대소문자만 다르기 때문에 "Arrays"
와 "PowerShell"
이 제거됩니다. Sort-Object
를 대소문자를 구분하도록 설정하려면 -CaseSensitive
매개변수를 사용할 수 있습니다.
명령:
$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b
출력:
arrays
Arrays
powershell
PowerShell
이제 출력은 중복된 요소가 유일한 "powershell"
만 제거됩니다 (대소문자 구분).
Get-Unique
를 사용하여 PowerShell 배열에서 중복 제거
Get-Unique
cmdlet은 정렬된 목록에서 고유한 항목을 가져옵니다. 이는 정렬된 목록에서 각 항목을 다음 항목과 비교하여 중복 항목을 제거하고 각 항목의 단일 멤버만 반환합니다.
이 cmdlet은 목록이 정렬된 경우에만 작동합니다. 속성 값을 기준으로 객체를 정렬하려면 Sort-Object
cmdlet을 사용할 수 있습니다.
다음 예제는 Sort-Object
로 배열 요소를 정렬한 후 Get-Unique
cmdlet을 사용하여 배열 $sort
에서 중복 항목을 제거합니다.
명령:
$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c
출력:
Arrays
arrays
PowerShell
powershell
이 출력에서 "powershell"
이 제거됩니다.
Get-Unique
는 대소문자를 구분하므로 문자 대소문자만 다른 문자열도 고유한 값으로 간주됩니다. 이렇게 하면 PowerShell의 배열에서 중복 요소를 쉽게 제거할 수 있습니다.
Hashtable
을 사용하여 PowerShell 배열에서 중복 제거
PowerShell은 중복을 효율적으로 제거하기 위해 Hashtable
을 사용할 수 있습니다. Hashtable
은 고유한 키-값 쌍을 저장하며, Hashtable
을 생성하고 배열 항목을 키로 사용하여 중복을 자동으로 제거할 수 있습니다.
다음 예제에서는 빈 Hashtable
($uniqueHash
)을 초기화한 다음 배열을 반복하면서 각 항목을 Hashtable
의 키로 설정합니다. 키는 고유해야 하므로 중복이 자동으로 제거됩니다.
결과는 $uniqueArray
변수에 저장됩니다.
$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray
출력:
powershell
arrays
이 출력에서는 Hashtable
를 사용하여 중복이 제거되어 남은 값이 출력됩니다. 중복을 제거하기 위해 Hashtable
을 사용하는 경우 값의 대소문자 구분을 고려하지 않습니다.
결론
PowerShell에서 배열의 중복 값을 관리하는 것은 일반적인 작업이며, 이 기사는 이를 달성하기 위한 여러 방법을 소개했습니다. Select-Object
, Sort-Object
, Get-Unique
cmdlet을 사용하고 Hashtable
을 활용함으로써, 대소문자 구분 여부에 관계없이 중복 제거를 필요에 맞게 조정하여 접근할 수 있습니다.