Jump to content

Powershell - Array sortieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich arbeite mich gerade in Powershell ein und stoße bei einem Script auf ein Problem wo ich nicht weiß wie ich es lösen soll.

 

ich muss die folgenden zwei Werte einlesen. Die Werte sehen wie folgt aus:

 

23 Team15

55 Team20

12 Team30

02 Team32

 

Die Werte der ersten Spalte muss ich sortieren. Kleinste Wert zu erst und dann aufsteigend. Ausgeben muss ich aber den zweiten Wert (z.B. Team15).

 

Ich muss da doch mit einem multidimensionalen Array arbeiten, oder? Habe mir da schon mehrer sachen im Internet angesehen nur leider verstehe ich die noch nicht.

Hier im Board habe ich z.B. folgendes gefunden:

routine-sortieren-zweidimensionalen-arrays-157402.html

Aber das kapiere ich mal gar nicht...

 

ich hoffe mir kann hier jemand helfen und einen schubs in die richtige Richtung geben, danke.

 

AS

Link zu diesem Kommentar

Danke, hab mal etwas gesucht und bin auf folgenden Artikel von Microsoft gestossen:

 

Windows PowerShell Tip: Working with Hash Tables

 

Mein Testcode sieht wie folgt aus:

 

$array = @{"Team20" = 10; "Team10" = 22; Team50 = 5}
$array.Add("Team30", 6)
$array.GetEnumerator() | Sort-Object Value

 

Das funktioniert soweit ganz gut aber woran ich jetzt scheiter sind vermutlich 2x Kleinigkeiten.

 

Nach dem sortieren ist das Array aber immer noch unsortiert, so könnte ich das ja nicht in einer foreach-Schleife verwenden.

Wie kann ich denn den ersten Wert z.B. ausgeben, habe dazu viele schreibweisen ($array[0,9] oder $array[0][1] usw.)gefunden, aber keine die mir die ersten beiden Werte ausgeben kann. Es gibt unter Powershell wohl viele verschiedene Arten von multi Arrays.

 

Ich muss nach dem sortieren den kleinsten Wert ausgeben, im Beispiel 5 mit Team50 und danach das ganze Array noch mit einer Foreach-Schleife komplett abarbeiten.

 

Bräuchte da noch mal einen Tipp/Hinweis...

 

Danke

 

AS

Link zu diesem Kommentar

Du hast kein Array mehr sondern eine Hashtable.

 

($array.GetEnumerator() | Sort-Object Value)[0].Name

 

foreach($item in $array.GetEnumerator()){

#...

}

 

Windows PowerShell Tip: Working with Hash Tables

 

EDIT:

Statt

($array.GetEnumerator() | Sort-Object Value)[0].Name

geht auch

$array.GetEnumerator() | Sort-Object Value | Select-Object -First 1 -Property Name

. Das ist die "ausgeschriebene" Variante.

bearbeitet von Dukel
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...