PowerShell의 유니언과 교차로?
다음 구조의 개체 배열이 있습니다.
structure Disk
{
int UID;
String Computer;
}
시스템에는 여러 개의 공유 디스크가 있을 수 있으며 디스크는 시스템 간에 공유될 수 있습니다.
저는 모든 컴퓨터에 공통된 모든 디스크를 찾고 싶습니다.예를 들어 시스템 A, B, C, 디스크 1, 2, 3이 있습니다.디스크 어레이가 {1,A}, {1,B}, {2,A}, {2,B}, {2,C}, {3,A}입니다.제가 원하는 결과는 A, B, C에 나타나기 때문에 디스크 2가 되어야 합니다.
이것을 달성할 수 있는 효과적인 방법이 있습니까?
각 루프마다 여러 개의 루프를 사용하여 달성할 수 있지만, 저는 확실히 더 나은 방법을 원합니다.교차로와 같은 작업을 생각하고 있지만 PowerShell에서 이것을 찾지 못했습니다.
가정하면$arr
다음과 같이 할 수 있습니다.
$computers = $arr | select -expand computer -unique
$arr | group uid | ?{$_.count -eq $computers.count} | select name
일반적으로 저는 다음과 같이 Powershell의 조합과 교차로에 접근할 것입니다.
$a = (1,2,3,4)
$b = (1,3,4,5)
$a + $b | select -uniq #union
$a | ?{$b -contains $_} #intersection
그러나 당신이 요구하는 것에 대해, 위의 해결책은 잘 작동하며 용어의 표준 정의에서 결합과 교차에 대해서는 잘 작동하지 않습니다.
업데이트:
나는 다음을 제공하는 pslinq를 썼습니다.Union-List
그리고.Intersect-List
Powershell과의 집합 결합 및 교차점을 달성하는 데 도움이 됩니다.
또한 할 수 있습니다.
$a = (1,2,3,4)
$b = (1,3,4,5)
Compare-Object $a $b -PassThru -IncludeEqual # union
Compare-Object $a $b -PassThru -IncludeEqual -ExcludeDifferent # intersection
다음과 같은 경우 작동하지 않습니다.$a
하지만 null입니다.
설정 빼기(a - b)의 경우:
$a | ?{-not ($b -contains $_)}
초기 버전에서는 이 기능이 작동하지 않지만 최신 버전에서는 를 호출할 수 있습니다.NET LINQ 확장 기능은 다음과 같이 직접 작동합니다.
[system.linq.enumerable]::union([object[]](1,2,3),[object[]](2,3,4))
(일부 열거형 유형으로 캐스트하지 않으면 PowerShell은 "오버로드를 찾을 수 없음" 오류를 발생시킵니다.)
이 기능은 PowerShell V4 및 V5에서 작동하지만 V2에서는 작동하지 않습니다.V3를 사용할 수 있는 시스템이 없습니다.
저는 아무도 1, 2, 3번 디스크가 첨부된 컴퓨터 a, b, c의 구체적인 예에 답하지 않았다는 것을 깨달았습니다.교차로, 유니언 및 세 세트 간의 차이 설정에 대해 주어진 코드 및 출력
코드
$a = @(1, 2, 3)
$b = @(1, 2)
$c = @(2)
'Intersection $a ⋂ $b ⋂ $c'
$a | Where-Object {$_ -In $b} | Where-Object {$_ -In $c}
'Union $a ⋃ $b ⋃ $c'
$a + $b + $c | Select-Object -Unique
'Set difference $a - $b - $c (items in $a but not $b or $c)'
$a | Where-Object {$_ -NotIn $b} | Where-Object {$_ -NotIn $c}
산출량
Intersection $a ⋂ $b ⋂ $c
2
Union $a ⋃ $b ⋃ $c
1
2
3
Set difference $a - $b - $c (items in $a but not $b or $c)
3
언급URL : https://stackoverflow.com/questions/8609204/union-and-intersection-in-powershell
'programing' 카테고리의 다른 글
AJAX 호출 시 다운로드 전에 window.on이 호출되지 않도록 할 수 있습니까? (0) | 2023.09.04 |
---|---|
자바 수학bigInteger를 java.lang에 캐스팅할 수 없습니다.정수 (0) | 2023.09.04 |
PL/SQL에서 .exe를 어떻게 호출합니까? (0) | 2023.09.04 |
도커 컨테이너 상태 저장 방법 (0) | 2023.09.04 |
노드 js와 함께 DOMParser를 사용하려고 합니다. (0) | 2023.09.04 |