On Jan 20, 2004, at 12:39 PM, Anthony J Segelhorst wrote:

I have the following output, and each value that is separated by comma is
a variable:


servera,serverb,109,aix4-r1,server
servera,serverb,109,aix4-r1,server
servera,serverb,109,aix4-r1,server
servera,serverb,109,aix4-r1,server
servera,serverb,109,aix4-r1,server
servera,serverb,109,hpux10,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server
servera,serverb,109,solaris2,server


I am trying to set up a counter that would actually output the data to be:


servera,serverb,109,aix4-r1,server,5
servera,serverb,109,hpux10,server,1
servera,serverb,109,solaris2,server,10

Does anyone any suggestion on how to set up a counter to count the lines
until a different line shows up. I already have the list sorted, so I
just need to compare the new string to old string and if they are the same
increase the counter, and if they are different start a new counter.

How about something like this (untested code):


#!/usr/bin/perl

use strict;
use warnings;

my($last, $counter) = (undef, 0);
while (<>) { # call with: perl script_name FILE(S) TO COUNT > OUTPUT_FILE
chomp;
if ($last) {
if ($_ eq $last) { $counter++; }
else {
print "$last,$counter\n";
undef $last;
$counter = 0;
}
}
else {
$last = $_;
$counter++;
}
}


__END__

James


-- 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