Jump to content

Zahlen aus einem text file entnehmen


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

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben (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 von matthes74
Geschrieben

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

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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...