linux天使团群里的筒子问的问题,觉得有必要和新人聊聊,老鸟请无视
统计一个文件中qq号绑定手机的情况
实现方式有很多种,这里通过awk 2维数组来实现
文件内容入如下:
# cat /tmp/q
11235334: 13443253456
11235335: 13443253457
11235336: 13443253458
11235333: 13443253458
11235336: 13443253459
11235334: 13443253452
执行之后预期想要的结果:
[root@www bin]# awk -F : -f /tmp/q2.awk /tmp/q
[11235333]
1
13443253458
[11235334]
2
13443253456
13443253452
[11235335]
1
13443253457
[11235336]
2
13443253458
13443253459
awk脚本内容如下:注释如果看不懂就留言吧,有时间我就做答
[root@www bin]# cat /tmp/q2.awk
{
sum[$1] += 1
#设置sum数组用来统计每个qq出现的次数
tel[$1, NR]=$2
#设置这个2维数组用来存储对应的手机号例如:tel[q号为下标 , NR自己增长]
}
END{
for ( i in sum)
#设置i 在sum里面循环,则i就是qq号码,sum[i] 是每个qq号出现的次数就是绑定了几个手机
{
print "["i"]"
print sum[i]
for( s in tel)
#s就是tel2维数组的下标,下面通过split函数来处理
{
qqnum=i
split(s, idx, SUBSEP)
#把s切割成多个元素来处理,idx[1] 第一个下标就是qq号,idx[2]第二个下标用来区别同一qq号对应的不同电话号码
#print idx[1] , idx[2], tel[idx[1], idx[2]] 大家可以自行打印输出来查看这个2维数组的处理细节
if( idx[1]==qqnum )
#如果当前的qq号等于此次sum循环的qq号,则打印对应的电话
{
print tel[idx[1], idx[2]]
}
}
}
}
|
转载于:https://blog.51cto.com/cherubines/1092064