【求助】perl处理txt数据并统计
有一个a.txt,里面大概有130W条数据格式是这样的pord,manu,mach,imei,imsi,op,ver,lwsf,pi,date100,1068,A9913...
有一个a.txt,里面大概有130W条数据格式是这样的pord,manu,mach,imei,imsi,op,ver,lwsf,pi,date100,1068,A9913,868294000090480,460017130059911,2,2.2.2,1,11,2013-12-22 00:00:00100,1068,S9,868672010008198,460078221801026,0,2.2.4,2,11,2013-12-22 00:00:00100,1068,U1203w,A1000030425A48A,460030262485407,3,2.2.4,1,16,2013-12-22 00:00:00100,1028,S300,862080022860885,460028551710598,1,3.0.7,1,16,2013-12-22 00:00:00100,1068,G29H,869527010421297,460014340503634,2,2.2.3,1,16,2013-12-22 00:00:00100,1068,U62,866729010163324,460029549652696,1,3.0.0,1,11,2013-12-22 00:00:00100,1068,U558w,A1000030413F3DB,460036741367307,3,2.2.4,1,11,2013-12-22 00:00:00100,1028,RSD_V5,869644010198153,460006162836600,null,1.3.0,null,16,2013-12-22 00:00:00现在想把manu,mach,imei,imsi,ver,lwfs相同的当成一条记录(user),但是有多少条就算多少次(times),并且根据lwsf来分组,得到这样的格式lwsf,user,times1,33,1112,22,344就是lwfs为1的有111条,但是里面manu,mach,imei,imsi,ver,lwfs相同折合起来只有33条,求大神帮忙啊
发的格式不清楚,我贴张图吧(最后那个时间是会变化的) 展开
发的格式不清楚,我贴张图吧(最后那个时间是会变化的) 展开
2个回答
展开全部
manu,mach,imei,imsi,ver,lwfs相同的当成一条记录
这个没有懂,如果有多种方式相等的怎么算?难道肯定只有一种方式么?
即lwsf为1的,user的值如果为aaaaaaaaaaaaa的有两条,bbbbbbbbbb的为30条,ccccccc的有5条怎么算呢?
第二个值怎么输出?
这个没有懂,如果有多种方式相等的怎么算?难道肯定只有一种方式么?
即lwsf为1的,user的值如果为aaaaaaaaaaaaa的有两条,bbbbbbbbbb的为30条,ccccccc的有5条怎么算呢?
第二个值怎么输出?
更多追问追答
追问
对的,已经规定好了只有这一种相等方式,即manu,mach,imei,imsi,ver,lwfs相等的都为一个user,按你说的,输出应该是1,3,37
追答
试试,结果在屏幕输出
如果你安装了perl,将脚本存为 pl011.pl,运行方式 pl011.pl file1.txt,这里的 file1.txt相当于你的a.txt
$head = <>;
while(<>)
{
@line = split(/,/,$_);
$lwfs = $line[7];
$user = join('|',$line[1],$line[2],$line[3],$line[4],$line[6],$line[7]);
$info{$lwfs}{'times'} +=1;
$info{$lwfs}{'users'}{$user} +=1;
}
print "lwsf,user,times\n";
foreach my $key ( keys %info )
{
$times=$info{$key}{'times'};
@users = keys $info{$key}{'users'};
$usercount = $#users+1;
print "$key,$usercount,$times\n";
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询