昨天写的是按照其中的一列消重来取另一列的count,可是却没有交待如何取数组元素的个数,刚才简单写了一个小程序,验证通过。
首先准备如下数据:
1{SPR}2{SPR}0
2{SPR}2{SPR}0
3{SPR}3{SPR}0
4{SPR}3{SPR}0
5{SPR}4{SPR}0
2{SPR}2{SPR}0
3{SPR}3{SPR}0
4{SPR}3{SPR}0
5{SPR}4{SPR}0
我想取第二列的个数,当然这里是要消重的,否则一个NR就可以了。残念。
#将记录按{SPR}分隔为列,并将输出的显示分隔符设置为TAB
BEGIN{FS="{SPR}";OFS="/t";}
#把$2第二列当作数组元素,可以保证将数组按第二列消重,因为数组的KEY唯一
{
arrqid[$2]++;
}
END{
#循环数组,每次把一个新的变量+1,这个变量就是数组的个数
for(i in arrqid)
{
count++;
}
#输出结果,为3
print count
}
BEGIN{FS="{SPR}";OFS="/t";}
#把$2第二列当作数组元素,可以保证将数组按第二列消重,因为数组的KEY唯一
{
arrqid[$2]++;
}
END{
#循环数组,每次把一个新的变量+1,这个变量就是数组的个数
for(i in arrqid)
{
count++;
}
#输出结果,为3
print count
}