Hogyan lehet eltávolítani a duplikációkat egy tömbből a PowerShellben?
El kell távolítania a duplikációkat a PowerShell-tömbből? Ebben a PowerShell-oktatóanyagban elmagyarázom, hogyan távolíthatok el ismétlődéseket egy tömbből a PowerShellben különböző módszerek és példák segítségével.
A PowerShell tömbjének ismétlődéseinek eltávolításához használja a Select-Object parancsmagot a -Unique kapcsolóval. Például $uniqueArray=$tömb | A Select-Object -Unique szűri a $array elemeket, hogy csak egyedi elemeket tartalmazzon. Ez a megközelítés hatékony és tömör, ha csak különálló értékeket tartalmazó tömbet kapunk
Távolítsa el a duplikációkat egy tömbből a PowerShellben
Ha még nem ismeri a PowerShell-tömböt, olvassa el a PowerShell-tömbről szóló cikket.
Íme egy példa egy egyszerű tömbre a PowerShellben:
$array = "apple", "banana", "apple", "cherry", "banana"Ebben a tömbben van néhány ismétlődő bejegyzésünk az „alma” és a „banán” kifejezésekre. Most különböző módszereket mutatok be, amelyekkel eltávolíthatja ezeket a duplikációkat a PowerShell-tömbből.
1. módszer: A Select-Object használata az -Unique funkcióval
Az egyik legegyszerűbb módja a duplikációk eltávolításának egy tömbből a PowerShellben, ha a Select-Object parancsmagot használja a -Unique paraméterrel.
A következőképpen használhatja:
$array = "apple", "banana", "apple", "cherry", "banana"
$uniqueArray = $array | Select-Object -Unique
$uniqueArrayEz a parancs a $array-t a Select-Object-ba vezeti, amely kijelöli az egyes elemeket. A -Unique paraméter kiszűri az ismétlődéseket, így egyedi értékek tömbje marad.
Nézze meg az alábbi képernyőképet, miután végrehajtottam a PowerShell-szkriptet VS-kóddal:
2. módszer: A Sort-Object és a Get-Unique használata
Egy másik módszer a tömb rendezése a Sort-Object, majd a Get-Unique használatával. Ez különösen akkor hasznos, ha azt szeretné, hogy az eredményül kapott tömb egyedi és rendezett legyen.
Íme egy példa:
$sortedUniqueArray = $array | Sort-Object -UniqueAlternatív megoldásként használhatja a Get-Unique parancsot:
$array = "apple", "banana", "apple", "cherry", "banana"
$sortedArray = $array | Sort-Object
$uniqueSortedArray = $sortedArray | Get-Unique
$uniqueSortedArrayElőször rendezzük a tömböt, majd a rendezett tömböt a Get-Unique-ba vezetjük. A Get-Unique parancsmag összehasonlítja a rendezett lista minden elemét a következő elemmel, kiküszöböli az ismétlődéseket, és minden elemből csak egy példányt ad vissza.
A kimenetet az alábbi képernyőképen láthatja, miután végrehajtottam a szkriptet VS kóddal.
3. módszer: Hashtable használata
Nagyobb tömbök esetén, vagy ha a teljesítmény aggodalomra ad okot, a hashtable használatával hatékonyan eltávolíthatja a duplikációkat a PowerShellben. A hashtable olyan adatstruktúra, amely kulcs-érték párokat tárol, és nem teszi lehetővé a kulcsok megkettőzését.
A következőképpen használhatja a hashtablet az ismétlődések eltávolításához:
$hashtable = @{}
foreach ($item in $array) {
$hashtable[$item] = $true
}
$uniqueArray = $hashtable.KeysEbben a szkriptben egy üres hashtablet hozunk létre a PowerShellben. Ezután az eredeti tömb minden elemét végigpörgetjük, és hozzáadjuk a hashtable-hoz, ahol minden elem $true értékű kulccsá válik. Mivel a hashtable-oknak nem lehetnek duplikált kulcsai, ez hatékonyan eltávolítja a duplikációkat. Végül kivonjuk a kulcsokat a hashtable-ból, az egyedi elemeket az eredeti tömbből.
4. módszer: A LINQ használata
Azok számára, akik ismerik a .NET-et, a PowerShell kihasználhatja a nyelvbe integrált lekérdezés (LINQ) képességeit az ismétlődések eltávolítására. Ez a módszer fejlettebb és alkalmas azok számára, akiknek nagyobb ellenőrzésre van szükségük az adatok feldolgozása felett.
Íme egy példa a LINQ használatára:
$uniqueArray = [System.Linq.Enumerable]::Distinct([System.Collections.Generic.List[string]]$array)Ebben a kódsorban a Distinct metódust használjuk a System.Linq.Enumerable osztályból, hogy különálló elemeket kérjünk le a tömbünkből, amely egy általános típusú listába kerül. karakterlánc.
Távolítsa el a duplikációkat egy többdimenziós tömbből a PowerShellben
Most pedig nézzük meg, hogyan távolíthatunk el ismétlődéseket egy többdimenziós tömbből a PowerShellben.
Az ismétlődések eltávolítása többdimenziós tömbből a PowerShellben bonyolultabb lehet, mivel a Select-Object -Unique nem működik közvetlenül a tömbökön. Ehelyett egyéni összehasonlítási logika kombinációját használhatja a Group-Object parancsmaggal. Íme egy példa, amely egy többdimenziós tömb egy adott tulajdonsága alapján távolítja el a duplikációkat:
# Define a multidimensional array with duplicate sub-arrays based on the first element
$multiArray = @(
@(1, 'apple'),
@(2, 'banana'),
@(1, 'apple'), # duplicate
@(3, 'cherry')
)
# Remove duplicates by grouping on the first element and then selecting the first group occurrence
$uniqueMultiArray = $multiArray | Group-Object { $_[0] } | ForEach-Object { $_.Group[0] }
# Display the unique multidimensional array
$uniqueMultiArray
Ebben a példában a $multiArray egy többdimenziós PowerShell-tömb néhány ismétlődő bejegyzéssel. A Group-Object használatával csoportosítjuk az altömböket az első elem szerint, majd minden csoporthoz csak az első altömböt jelöljük ki a ForEach-Object { $_.Group[ használatával. 0] }. A $uniqueMultiArray az egyes altömbök első eleme alapján az egyedi altömböket fogja tartalmazni.
Ez a módszer feltételezi, hogy a „duplikált” definíció az egyes altömbök első elemén alapul. Ha az ismétlődések definíciója eltérő, akkor ennek megfelelően módosítania kell a szkriptet a Group-Object parancsmagban található { $_[0] } szkriptblokk módosításával, hogy megfeleljen. az egyediség kritériumai.
Itt láthatja a kimenetet az alábbi képernyőképen, miután végrehajtottam a PowerShell-szkriptet a Visual Studio kóddal.
Következtetés
Az ismétlődések eltávolítása egy tömbből a PowerShellben többféle módszerrel is megvalósítható. Az egyik legegyszerűbb módszer a Select-Object -Unique használata az egyszerűség kedvéért, míg a haladóbb felhasználók választhatnak hashtablet vagy LINQ-t a teljesítmény és a vezérlés érdekében.
Remélem, most már van ötlete arról, hogyan távolíthatja el a duplikációkat a PowerShell tömbjéből különféle módszerekkel, például:
- A Select-Object használata az -Unique funkcióval
- Sort-Object és Get-Unique használata
- Hashtable használata
- LINQ használata


