Can someone point me in the right direction??????

I am trying to figure out my Perl parsing script to dump the interesting
part of my log files to another parsed file. Bascially I want to try an
remove "Dport" rows that contain 80,53,25, etc... Those are tabs between
each
field.

Log File name "log.040411":
 Start           Bytes    SIp             Sport    DIp              Dport
RIp
 -----           -----   -----            -----    -----            -----   
  -----
 1074715516      111     222.222.2.2      2566     111.111.111.1    80
111.111.111.1
 1074715516      222     .                3584     .                80
.
 1074715516      400     .                2500     .                6100
.
 1074715516      500     etc              3000     etc              53
.
 1074715516      700     .                2700     .                5100
.
 1074715516      400     .                2500     .                7100
.
 1074715516      900     .                9000     .                25
.



Goal log file name "log.040411.p":
 Start           Bytes    SIp             Sport    DIp              Dport
RIp
 -----           -----   -----            -----    -----            -----   
-----
 1074715516      400     .                2500     .                6100
.
 1074715516      700     .                2700     .                5100
.
 1074715516      400     .                3300     .                7100
.


What I have tried...

#!/usr/bin/perl
# command line looks like:
# parse.pl /etc/log.040411

use strict;
use warnings;


$newfilename = "log.040411.p";


chomp(@parse = <ARGV>);

foreach (@parse) {
    @line = split (/\t/, $_);

if($line[5] != 80 || $line[5] != 53 || $line[5] != 25)

open (FILE, ">>$newfilename");
print;
close(FILE);                    # Close the file

}

also tried :

#!/usr/bin/perl
# command line looks like:
# parse1.pl /etc/log.040411

use strict;
use warnings;


$newfilename = "log.040411.p";

chomp(@parse = <ARGV>);

open (FILE, ">$newfilename");
foreach (@parse) {
    @line = split (/\t/, $_);
print if($line[5] != 80 || $line[5] != 53 || $line[5] != 25);
}
close(FILE);                    # Close the file


But I get errors or prints ARRAY...

Is there an easier way do to this? These log files get to around 500MB a day
so the fastest way is hoped.
Would a while <> be better??

Any help is great..

Ron


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to