Schrift
[thread]12600[/thread]

Mustererkennung in Perl



<< >> 6 Einträge, 1 Seite
johnh
 2008-10-08 01:09
#115255 #115255
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

kann ich in Perl aus mehreren Zeilen in Form von:

Code (perl): (dl )
1
2
3
4
RTTs of replies in ms: min/avg/max: 0.093 / 0.104 / 0.128
RTTs of replies in ms: min/avg/max: 0.079 / 0.200 / 0.517
RTTs of replies in ms: min/avg/max: 0.081 / 0.090 / 0.101
RTTs of replies in ms: min/avg/max: 0.090 / 0.248 / 0.709


die mittlere Dezimalzahl herausfiltern ? Also der "avg" Wert ?

Grüße,
J
jan
 2008-10-08 02:13
#115257 #115257
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
klar. welche willst du haben? jeweils die aus jeder zeile?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
my $content = qq~1: RTTs of replies in ms: min/avg/max: 0.093 / 0.104 / 0.128
2: RTTs of replies in ms: min/avg/max: 0.079 / 0.200 / 0.517
3: RTTs of replies in ms: min/avg/max: 0.081 / 0.090 / 0.101
4: RTTs of replies in ms: min/avg/max: 0.090 / 0.248 / 0.709
qq~;

while($content =~ m!RTTs of replies in ms: min/avg/max: \d\.\d* / (\d\.\d*) / \d\.\d*!gs)
{
        print "avg: " . $1 . "\n";
}


zB
johnh
 2008-10-08 02:27
#115258 #115258
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hallo Jan,

ja genau... jeweils aus jeder Zeile, die Daten habe ich aber in einem Textfile vorliegen..muss ich dass so programmieren ?
Code (perl): (dl )
1
2
3
4
5
my $content = <output>;
while($content =~ m!RTTs of replies in ms: min/avg/max: \d\.\d* / (\d\.\d*) / \d\.\d*!gs)
{
         print "avg: " . $1 . "\n";
}

Danke Dir Jan... kann ich das was du oben geschrieben hast irgendwo nachlesen, kannst du mir ein Tutorial empfehlen ?
jan
 2008-10-08 02:44
#115259 #115259
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du's aus einer datei ziehst, dann wäre die while-schleife schlauer außen drum, denke ich, also
Code (perl): (dl )
1
2
3
4
5
6
7
while(my $line = <output>)
{
        if($line =~ m!RTTs of replies in ms: min/avg/max: \d\.\d* / (\d\.\d*) / \d\.\d*!)
        {
                  print "avg: " . $1 . "\n";
        }
}


da brauchst du dann auch die modifier nicht, weil du ja jeweils nur eine zeile verarbeitest. nachlesen kannst du das zB hier
http://perldoc.perl.org/perlref.html, ein tutorial zu regulären ausdrücken gibt's hier: http://perldoc.perl.org/perlretut.html

beides natürlich auf englisch, falls das ein problem ist, lässt sich aber sicher auch was deutsches finden.
johnh
 2008-10-08 03:13
#115260 #115260
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Jan vielen vielen dank,

die Seite sieht auch sehr vielversprechend aus...

Hast mir viel geholfen, danke dir nochmals...
Linuxer
 2008-10-08 12:52
#115267 #115267
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
*GRML*
Crosspost...

http://perlboard.de/cgi-bin/perlboard.pl?action=sh...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< >> 6 Einträge, 1 Seite



View all threads created 2008-10-08 01:09.