Dirty Data and Errors

I want to scan a log file for bad connections, looking in column #3, and #6 only. I only want to print lines that have a numerical value of greater than say 250. Some of the columns might have non-numerical values in them. They should not be included.

I have included output below. I would only want the line starting with "name1" to be printed. The value to be over 250 could be either #3, or #6.

Router   Interface     ---ES--  --SES--  --SEFS-  --UAS--  --CSS--  --PCV--  --LES--  --BES--  -TotVal-
name1 T1_0/0/0       389        9       43       38        0     3110        0      279       96
name2 T1_0/0/0         0        0        0        0        0        0        0        0       96
name3 T1_0/0/1         0        0        0        0        0        0        0        0       96
name4 T1_0/1/0         0        0        0        0        0        0        0        0       96
stakorAsked:
Who is Participating?
 
ozoConnect With a Mentor Commented:
perl -ane 'print if $F[2]>250 || $F[6]>250' file.log
0
 
wilcoxonConnect With a Mentor Commented:
Try this...
#!/usr/local/bin/perl
use strict;
use warnings;
my $fil = shift or die "Usage: $0 logfile\n";
open IN, $fil or die "could not open $fil: $!";
while (<IN>) {
    next if /^\s*Router\s*Interface\b/; # skip header row
    my @cols = split;
    print if ($cols[2] > 250 or $cols[5] > 250); # perl is 0-based so this is cols 3 and 6
}
close IN;

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.