Thanks John, Thats cool...
But, I want to be able to print the numbers that are typos, also. like this
"111.111.13473"
That script just drops them.
Is there a way I could print those at the end of the script after the count of real
ip's?
Like:
Goal Out:
111.111.135.11
111.222.81.97
Total IP'S = 2
Not Ip=111.111.13473
Thanks,
Rob
-----Original Message-----
From: "John W. Krahn" <[EMAIL PROTECTED]>
Sent: Mar 18, 2004 10:39 AM
To: [EMAIL PROTECTED]
Subject: Re: sort stdin and print
Rmck wrote:
>
> HI
Hello,
> I have a script that reads stdin from the output of another script
> and cleans it up and prints it. The script gets ip's.
>
> I would like to sort it and and eliminate duplicates count the
> sorted/unique ips then print???
The best way to store unique values is to use a hash.
> I thought using the perl sort command would help but it did not...
> I could pipe the output to /bin/sort -u, but I wanted to do everthing
> in perl.
>
>
> #!/usr/bin/perl
> use strict;
> my $count = 0;
>
> while( <> ) { #read from stdin one line or record at a time
>
> s/ipadd://; #if line has ipadd: remove it
> s/^ |\t//; #if any whitespace at the beginning of
> string rm
> next if ($_=~/^\s*(\*|$)/); #if line begins with a *
>
> print sort $_;
You are sorting a single value, not a list of values.
> $count ++; # Count
>
> }
> print "\n";
> print "Total IP'S = $count\n";
>
> Current out:
> 111.222.81.97
> 111.222.81.97
> 111.111.135.11
>
> Total IP'S = 3
>
> Goal Out:
> 111.111.135.11
> 111.222.81.97
>
> Total IP'S = 2
I would do it something like this:
#!/usr/bin/perl
use warnings;
use strict;
use Socket;
my %IPs;
while ( <> ) {
$IPs{ inet_aton( $1 ) }++ if /\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/;
}
for ( sort keys %IPs ) {
print inet_ntoa( $_ ), "\n";
}
print "\nTotal IP'S = ", scalar keys %IPs, "\n";
__END__
John
--
use Perl;
program
fulfillment
--
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>