数组的定义:
数组是一种有关联关系的变量,通过下标依次访问。
数组名[下标] = 值,下标可以使用数字也可以使用字符串。
数组的遍历:
for(变量 in 数组名){
数组名[变量] 操作
}
数组删除:
delete 数组名,就可以整个数组
delete 数组名[下标],可以删除某一个数组元素
echo 'zhaoy 70 72 74 76 74 72' >> score.txt
echo 'wangl 70 81 84 82 90 88' >> score.txt
echo 'qiane 60 62 64 66 65 62' >> score.txt
echo 'sunw 80 83 84 85 84 85' >> score.txt
echo 'lixi 96 80 90 95 89 87' >> score.txt
把下边的内容写入到score.txt
:
zhaoy 70 72 74 76 74 72
wangl 70 81 84 82 90 88
qiane 60 62 64 66 65 62
sunw 80 83 84 85 84 85
lixi 96 80 90 95 89 87
awk '{sum=0;for(col=2;col<NF;col++) sum=sum+$col;allSum[$1]=sum}END{print allSum["zhaoy"]}' score.txt
可以看到zhaoy
的总成绩366
。NF
是awk
的系统变量,要是不清楚含义的话,可以参考博文《Linux学习之awk表达式》中系统变量。
awk '{sum=0;for(col=2;col<NF;col++) sum=sum+$col;allSum[$1]=sum}END{for(user in allSum) print user,allSum[user]}' score.txt
将用户成绩总和求出来,然后存入到allSum
数组里边,然后在END
例程中输出。
awk '{sum=0;for(col=2;col<NF;col++) sum=sum+$col;allSum[$1]=sum}END{for(user in allSum) {total =allSum[user]} print total,NR,total/NR}' score.txt
将每个用户成绩总和求出来,然后存入到allSum
数组里边,然后在END
例程中输出所有用户总成绩,记录总数量和所有用户平均成绩。
awk
的脚本文件也可以保存起来,然后-f
就可以调用awk
的脚本文件。ARGV
是命令行数组,ARGC
是命令行数组元素个数。
scriptWithAwk.awk
里边的内容:
BEGIN{
for(x=0;x<ARGC;x++){
print ARGV[x]
}
print "ARGC number is " ARGC
}
awk -f scriptWithAwk.awk 11 13 15
输出结果是:
awk
11
13
15
ARGC number is 4
awk
就是ARGV[0]
,11
就是ARGV[1]
,13
就是ARGV[2]
,15
就是ARGV[3]
,ARGC
的值是4
。
此文章为8月Day 13学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。