Linux学习之awk数组

数组的定义:

数组是一种有关联关系的变量,通过下标依次访问。
数组名[下标] = 值,下标可以使用数字也可以使用字符串。

数组的遍历:

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的总成绩366NFawk的系统变量,要是不清楚含义的话,可以参考博文《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 讲》

猜你喜欢

转载自blog.csdn.net/qq_42108074/article/details/132258121