数组的定义
Map)数组的遍历
eg:
awk '{ sum=0;for(column=2;column<=NF;column++) sum+=$column;average[$1]=sum/(NF-1)}END{ for( user in average) print user,average[user]}' kpi.txt

awk '{ sum=0;for(column=2;column<=NF;column++) sum+=$column;average[$1]=sum/(NF-1)}END{ for( user in average) sum2+=average[user] ; print sum2}' kpi.txt

awk '{ sum=0;for(column=2;column<=NF;column++) sum+=$column;average[$1]=sum/(NF-1)}END{ for( user in average) sum2+=average[user] ; print sum2/NR}' kpi.txt

删除数组
delete 数组[下标]命令行参数数组
ARGCARGVeg:
arg.awk
BEGIN{
for(x=0;x<ARGC;x++)
print ARGV[x]
print ARGC
}
awk -f arg.awk 11 32

kpi.txt
user1 70 72 74 76 74 72
user2 80 82 84 82 80 78
user3 60 61 62 63 64 65
user4 90 89 88 87 64 85
user5 45 60 63 62 61 50
result.awk
{
sum=0
for(column=2;column<=NF;column++)
sum+=$column
average[$1]=sum/(NF-1)
# print $1,average[$1]
if(average[$1]>=80)
letter="S"
else if(average[$1]>=70)
letter="A"
else if(average[$1]>=60)
letter="B"
else
letter="c"
print $1,average[$1],letter
letter_all[letter]++
}
END{
for(user in average)
sum_all+=average[user]
avg_all=sum_all/NR
print "average all: ",avg_all
for(user in average)
if (average[user] > avg_all)
above++
else
below++
print "above", above
print "below", below
print "S:", letter_all["S"]
print "A:", letter_all["A"]
print "B:", letter_all["B"]
print "C:", letter_all["C"]
}
执行结果
awk -f result.awk kpi.txt
