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
Powershell - Array sortieren
Erstellt von
astalbold
, 20. Sep 2012 10:11
4 Antworten in diesem Thema
#3
Geschrieben 21. September 2012 - 10:39
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:
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
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
#4
Geschrieben 21. September 2012 - 10:50
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
foreach($item in $array.GetEnumerator()){
#...
}
Windows PowerShell Tip: Working with Hash Tables
EDIT:
Statt
($array.GetEnumerator() | Sort-Object Value)[0].Namegeht auch
$array.GetEnumerator() | Sort-Object Value | Select-Object -First 1 -Property Name. Das ist die "ausgeschriebene" Variante.
Bearbeitet von Dukel, 21. September 2012 - 11:16.
Unless your name is Google
Stop acting like you know everything
Stop acting like you know everything










