PowerShell 배열에서 중복 값을 제거하는 방법

  1. Select-Object를 사용하여 PowerShell 배열에서 중복 값 제거
  2. Sort-Object를 사용하여 PowerShell 배열에서 중복 값 제거
  3. Get-Unique를 사용하여 PowerShell 배열에서 중복 제거
  4. Hashtable을 사용하여 PowerShell 배열에서 중복 제거
  5. 결론
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을 활용함으로써, 대소문자 구분 여부에 관계없이 중복 제거를 필요에 맞게 조정하여 접근할 수 있습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - PowerShell Array