• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 195
  • Last Modified:

counting rows in a list 5

I know very little about PERL :(

I have list of millions of rows of data. All data values are separated by a comma

I have to count how many rows contain a specific data value

for example

101,102,143,145,146,149
101,102,143,145,147,148
101,102,143,145,147,149
101,102,143,145,148,149
101,102,143,146,147,148
101,102,143,146,147,149
101,103,143,146,148,149
101,103,143,147,148,149
101,103,144,145,146,147
101,104,144,145,146,148
101,104,144,145,146,149
101,104,144,145,147,148
101,105,144,145,147,148

from that sample list, I have to count how many rows have the value 103 for the second data entry, but only if the value in the first column is 101, so for this list the number of rows with 103 in the second data entry where the first value is 101, would be 1

I have a previous script (attached) from "jb1dev + ozo" which counts the rows with particular values in the first and second column.

Now the script works great to count as above.

I need this script to count every row with 101 and list the number of rows that contain

101,102
101,103
101,104
101,105

and list them in the output file as (according to the above list)

102 6
103 3
104 3
105 1

Could you alter this script (as it works very fast) to count the number of rows with 101 in the first column and record the number of rows with the variable value in the second column ?

Thankyou very much in advance
count3a.txt
0
Europa MacDonald
Asked:
Europa MacDonald
  • 2
  • 2
1 Solution
 
ozoCommented:
perl -ne "$c{$1}++ if /^101,(\d+)/;END{print "$_ $c{$_}\n" for sort{$c{$b}<=>$c{$a}}keys %c}" master.vim > count.txt
0
 
Europa MacDonaldChief slayer of dragonsAuthor Commented:
thanks ozo, could I have it as a .pl file again please ?
0
 
ozoCommented:
#!/usr/bin/perl
use strict;
use warnings;
open M,"<master.vim" or die "master.vim $!";
my %c;
 /^101,(\d+)/ &&  $c{$1}++ while <M>;
close M;
open C,">count.txt" or die "count.txt $!";
print C "$_ $c{$_}\n" for sort{$c{$b}<=>$c{$a}}keys %c;
close C;
0
 
Europa MacDonaldChief slayer of dragonsAuthor Commented:
Fantastic, works great, thankyou very much
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now