matthes74 0 Geschrieben 10. März 2016 Melden Teilen Geschrieben 10. März 2016 Hi, knobel grade an etwas und komme schnell an meine Grenzen :( aus diesem text: "(groupid=0, jobs=1): err= 0: pid=4768: Thu Mar 10 15:51:14 2016 read : io=3790.0KB, bw=384786B/s, iops=187, runt= 10086msec slat (usec): min=6, max=27, avg= 8.62, stdev= 1.42" möchte ich gerne den Wert iops auslesen. in dem o.g. text wäre jetzt z.B. der Wert 187. Es handelt sich um eine Performanceauswertung von Datenträgern, weshalb der Wert halt, je nach Güte der Disk, variiert. Bei Flash erhalte ich auch 6 stellige IO Werte. Ich möchte als Wert die Zahl haben, hier also die 187. Kann mir jemand helfen?? Danke und Grüße, Matthes Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 10. März 2016 Melden Teilen Geschrieben 10. März 2016 Powershell: $var = "(groupid=0, jobs=1): err= 0: pid=4768: Thu Mar 10 15:51:14 2016 read : io=3790.0KB, bw=384786B/s, iops=187, runt= 10086msec, slat (usec): min=6, max=27, avg= 8.62, stdev= 1.42" $var.Split(",") | Select-String -Pattern "iops" Ausgabe: iops=187 Kannst du dann einfach mit Get-ChildItem und Get-Content über deine Dateien laufen lassen. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. März 2016 Melden Teilen Geschrieben 10. März 2016 ... und wenn's dann nur die Zahl sein soll, noch ein Split("=")[1] einbauen... Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 10. März 2016 Melden Teilen Geschrieben 10. März 2016 ... und wenn's dann nur die Zahl sein soll, noch ein Split("=")[1] einbauen... Das schaut dann so aus: ($var.Split(",") | Select-String -Pattern "iops").toString().split("=")[1] 1 Zitieren Link zu diesem Kommentar
matthes74 0 Geschrieben 10. März 2016 Autor Melden Teilen Geschrieben 10. März 2016 (bearbeitet) vielen Dank, ich erhalte folgende Meldung: $var = get-content 2k-randrw.txt | Select-String "iops" ($var.Split(",") | Select-String -Pattern "iops").toString().split("=")[1] Method invocation failed because [Microsoft.PowerShell.Commands.MatchInfo] does not contain a method named 'Split'.At line:2 char:1+ ($var.Split(",") | Select-String -Pattern "iops").toString().split("=")[1]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: ( :) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Warum wird die split methode nicht akzeptiert. für jeden Tipp dankbar, Matthes. Hi, mit $var -Split "," | Select-String -Pattern "iops".toString() erhalte ich nun zumindest schon mal iops=187 Jetzt müsste nur noch "iops=" weg.... aha...: $var2 = $var -Split "," | Select-String -Pattern "iops".toString() $var2 -split "=" | Select-String -Pattern [1] 187 Vielen Dank!!! PS.: wenn es eleganter geht, bitte thread updaten.... bearbeitet 10. März 2016 von matthes74 Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 10. März 2016 Melden Teilen Geschrieben 10. März 2016 wenn du ein wenig Lust auf reguläre Ausdrücke hast (such einfach nach "Powershell regular expressions") $String = "(groupid=0, jobs=1): err= 0: pid=4768: Thu Mar 10 15:51:14 2016 read : io=3790.0KB, bw=384786B/s, iops=187, runt= 10086msec, slat (usec): min=6, max=27, avg= 8.62, stdev= 1.42" $Pattern = "iops=\d+" $Regex = New-Object System.Text.RegularExpressions.Regex $Pattern $($Regex.Match($String)) -match '(?''result''\d+)' | out-null $Matches['result'] oder auch möglich $String -match '(?''result0''iops=\d+)' | out-null $Matches['result0'] -match '(?''result''\d+)' | out-null $Matches['result'] blub Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 11. März 2016 Melden Teilen Geschrieben 11. März 2016 (($var -Split "," | Select-String -Pattern "iops".toString()) -split "=")[1] ... in eine Zeile korrekt zusammengedampft :) Zitieren Link zu diesem Kommentar
matthes74 0 Geschrieben 15. März 2016 Autor Melden Teilen Geschrieben 15. März 2016 vielen Dank!! hat jetzt wunderbar funktioniert. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.