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 '{if($2>=80){print $1;print $2}}' score.txt
把第二个字段大于80的用户名和分数都输出,但是可以看到是用户名和分数是换行输出。
awk 'BEGIN{OFS=" "}{if($2>=80){print $1,$2}}' score.txt
把成绩和用户名输出在同一行。
循环
while
循环格式如下:
while(条件表达式)
awk语句集
do
循环格式如下:
do{
awk语句集
}while(条件表达式)
for
循环格式如下:
for(初始值;判断条件;变量变化语句){
awk语句集
}
awk '{sum=0; for(c=2;c<=NF;c++)sum=sum+$c;print sum}' score.txt
可以把每行的所对应分数的总值计算出来。
awk '{sum=0; for(c=2;c<=NF;c++){sum=sum+$c;print sum}}' score.txt
,这样计算的结果就是错误的,因为它把每一行每一列计算出来的数据都输出了,可以看到在for
之后的{}
里,for
循环才能让对应的语句进行循环操作。
此文章为8月Day 13学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。