PowerShell: Hogyan lehet eltávolítani a duplikációkat a tömbből?
A PowerShell egy hatékony szkriptnyelv, amelyet széles körben használnak az IT-iparban a feladatok automatizálására. Ez egy parancssori shell és szkriptnyelv, amely a .NET keretrendszerre épül. A PowerShellben a szakemberek egyik leggyakoribb feladata a tömbökkel való munka. A tömbök olyan adatok gyűjteményei, amelyek egyetlen változóban tárolhatók, és index segítségével érhetők el. A duplikátumok tömbökből való kiválogatása fárasztó és időigényes lehet a kódolók számára. Szerencsére a PowerShell egy könnyen használható megoldást kínál a duplikációk eltávolítására a tömbökből. Ebben a blogbejegyzésben megvizsgáljuk, hogyan távolíthatjuk el a duplikációkat a PowerShell tömbjéből, és hogyan javíthatjuk a kódolási hatékonyságot.
A tömbök duplikátumainak megértése
Egyszerűen szólva, a tömbök arra szolgálnak, hogy egy változóban szervezett módon tároljanak egy adatlistát. A tömb ismétlődése akkor következik be, ha egynél több azonos értékű elem van. Ez problémákat okozhat a tömbbel való munka során, mert helytelen eredményekhez vagy hibákhoz vezethet. Tehát a duplikátumok eltávolítása egy tömbből fontos az adatok pontosságának biztosítása érdekében. Itt jön jól a PowerShell!
Módszerek a duplikációk eltávolítására egy tömbből a PowerShellben
Számos módszer létezik a duplikációk eltávolítására egy tömbből a PowerShellben. Íme néhány a leggyakoribb módszerek közül:
1. módszer: A Select-Object parancsmag használata egyedi értékek lekéréséhez
A Select-Object parancsmag egy objektum adott tulajdonságainak kiválasztására szolgál. Használható egyedi értékek lekérésére is egy tömbből. Ha a Select-Object parancsmagot szeretné használni, hogy egyedi értékeket kapjon egy tömbből, használja a következő parancsot:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Select-Object -Unique
Ez a parancs eltávolítja az összes ismétlődést a tömbből, és csak a tömb egyedi elemeit hagyja meg.
Kimenet :
1
2
3
4
5
6
7
Íme egy másik példa arra, hogyan lehet egyedi értékeket kapni egy karakterlánc tömbből:
# Sample string array with duplicates
$StringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "PowerShell"
# Create a new array to store unique strings
$UniqueArray = $StringArray | Select-Object -Unique
# Output the unique array
$UniqueArray
Kimenet :
SharePoint
Microsoft 365
PowerShell
2. módszer: A Sort-Object parancsmag használata az ismétlődések eltávolításához
A Sort-Object parancsmag az objektumok egy vagy több tulajdonság szerinti rendezésére szolgál. Használható a duplikációk eltávolítására is egy tömbből. Ha a Sort-Object parancsmaggal szeretné eltávolítani a duplikációkat egy tömbből, használja a következő parancsot:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$Array | Sort-Object -Unique
Ha kis- és nagybetűket megkülönböztető ismétlődést szeretne eltávolítani, íme egy példa:
# Sample string array with duplicates
$stringArray = "SharePoint", "Microsoft 365", "PowerShell", "SharePoint", "powershell"
# Create a new array to store unique strings
$uniqueArray = $stringArray | sort-Object -CaseSensitive -Unique
# Output the unique array
$uniqueArray
Kimenet :
Microsoft 365
powershell
PowerShell
SharePoint
3. módszer: A Get-Unique parancsmag használata az ismétlődések eltávolításához
A PowerShell egyszerű és hatékony módszert kínál a duplikált bejegyzések eltávolítására egy tömbből a Get-Unique parancsmag használatával. Ne feledje azonban, hogy a Get-Unique csak rendezett listákon működik. Ha nem biztos abban, hogy a lista rendezve van-e, a Get-Unique előtt használhatja a Sort-Object parancsot. Ha a Get-Unique parancsmaggal szeretné eltávolítani a duplikációkat egy tömbből, használja a következő parancsot:
$Array = @(1, 2, 2, 3, 4, 4, 5, 6, 6, 7)
$UniqueArray = $array | Sort-Object | Get-Unique
$UniqueArray # Outputs: 1 2 3 4 5 6 7
Íme a fenti szkriptek eredménye:
Hogyan lehet ismétlődőket találni a Group-Object parancsmag segítségével?
A Group-Object parancsmag az objektumok egy vagy több tulajdonság alapján történő csoportosítására szolgál. Arra is használható, hogy egy tömbben duplikációkat keressen. Ha a Group-Object parancsmagot szeretné használni egy tömbben található ismétlődések kereséséhez, használja a következő parancsot:
$Array | Group-Object | Where-Object Count -gt 1 | Select-Object Name
Ez a parancs a tömb elemeit értékük szerint csoportosítja, és megszámolja, hogy az egyes értékek hányszor jelennek meg. Ezután kiválasztja a többször megjelenő értékeket.
Módszerek kombinálása összetettebb tömbökhöz
Bonyolultabb tömbök esetén szükség lehet a duplikátumok eltávolítására szolgáló módszerek kombinálására. Ha például objektumok tömbje van, és egy adott tulajdonság alapján szeretné eltávolítani az ismétlődéseket, akkor a következő parancsot használhatja:
$Array | Sort-Object -Property PropertyName -Unique | Select-Object PropertyName, Property1, Property2
Íme egy példa:
# Array with duplicate objects
$ObjectArray = @(
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Jane"
Age = 30
Desgination = "Analyst"
},
[PSCustomObject]@{
Name = "John"
Age = 25
Desgination = "IT Manager"
},
[PSCustomObject]@{
Name = "Alex"
Age = 35
Desgination = "Engineer"
}
)
#Select unique objects from the array based on Name property
$objectArray | Sort-Object -Property Name -Unique | Select-Object Name, Age
Kimenetek:
Name Age
---- ---
Alex 35
Jane 30
John 25
Ez a parancs a PropertyName tulajdonság szerint rendezi a tömbben lévő objektumokat, csak az elem első előfordulását tartja meg, és eltávolítja a duplikációkat a tulajdonság alapján. Ezután kiválasztja az egyes objektumok PropertyName, Property1 és Property2 tulajdonságait.
Következtetés
A duplikátumok eltávolítása egy tömbből a PowerShellben gyakori feladat, amelyet rendszeresen el kell végeznie. Számos módszer létezik a másolatok eltávolítására egy tömbből, beleértve a Select-Object parancsmagot, a Sort-Object parancsmagot, a Get-Unique parancsmagot és a Group-Object parancsmagot. Ezeknek a technikáknak a megértése lehetővé teszi a jövőbeni kihívások kezelését, amelyek a tömbök ismétlődései miatt merülhetnek fel, valamint javítja a kódolási hatékonyságot és időt takarít meg.

