利用awk处理学生分数排名问题案例

利用awk处理学生分数排名问题真实案例如下:

1、已知老男孩教育运维班26期期中集群架构上台述职报告人员的分数为:

提示:由述职学员上台演讲搭建的集群架构,由学生评委和导师评分,历经2天共产生如下评分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@oldboy ~]# cat oldboy_student.txt
冯泉    100     100     96      95      100     96      100     97
万永振  100     95      90      88      95      98      95      98
徐亮伟  100     100     90      98      90      98      100     96
曹雅楠  100     100     95      90      97      90      95      98
陈派宇  90      95      95      96      100     98      100     96
李峰    90      90      90      85      92      95      95      98
余连辉  90      93      95      92      95      95      96      95
侯亚光  90      96      97      90      90      85      95      90
王续    85      92      98      98      90      95
蔚雷    92      92      96      90      90      80
苏浩智  88      96      85      95      90      90
徐登辉  85      95      88      90      90      90
林章益  91      97      98      90      100     90
黄品清  85      97      88      90      90      90
李健    85      95      90      88      80      80
宫全乐  88      95      90      88      90      100
万良    89      95      95      88      100     100
马自强  88      97      90      88      90      90
任冠亚  88      97      98      90      100     100

现在要求去掉一个最高分,一个最低分,然后计算学员的平均分,排序!

2、排序程序如下(程序来自学员侯鹏飞(《跟老男孩学习Linux三剑客命令一书作者》内部发行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@oldboy ~]# cat oldboy.awk 
{
        name=$1
        MAX=$2
        MIN=$2
        total=$2
        for (x=3;x<=NF;x++){
                if($x>=MAX){
                    MAX=$x
                }
                if($x<=MIN){
                    MIN=$x
                }
                total+=$x
        }
        num=total-MAX-MIN
        avar=num/(NF-3)
        printf "%-5.3s MAX=%3d   MIN=%2d  avar=%0.2f\n", name,MAX,MIN,avar
}

3、处理结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@oldboy ~]# awk -f oldboy.awk oldboy_student.txt|sort -t = -rnk4|nl
     1  冯泉    MAX=100   MIN=95  avar=98.17    #<==26期状元
     2  徐亮伟   MAX=100   MIN=90  avar=97.00   #<==26期榜眼
     3  陈派宇   MAX=100   MIN=90  avar=96.67   #<==26期探花
     4  任冠亚   MAX=100   MIN=88  avar=96.25
     5  曹雅楠   MAX=100   MIN=90  avar=95.83
     6  万永振   MAX=100   MIN=88  avar=95.17
     7  万良    MAX=100   MIN=88  avar=94.75
     8  余连辉   MAX= 96   MIN=90  avar=94.17
     9  林章益   MAX=100   MIN=90  avar=94.00
    10  王续    MAX= 98   MIN=85  avar=93.75
    11  李峰    MAX= 98   MIN=85  avar=92.00
    12  侯亚光   MAX= 97   MIN=85  avar=91.83
    13  蔚雷    MAX= 96   MIN=80  avar=91.00
    14  苏浩智   MAX= 96   MIN=85  avar=90.75
    15  宫全乐   MAX=100   MIN=88  avar=90.75
    16  徐登辉   MAX= 95   MIN=85  avar=89.50
    17  马自强   MAX= 97   MIN=88  avar=89.50
    18  黄品清   MAX= 97   MIN=85  avar=89.50
    19  李健    MAX= 95   MIN=80  avar=85.75

4、26期学员总数约80人,前两天述职人数19人,述职视频全球免费分享

百度云分享: http://yun.baidu.com/share/link?shareid=592899567&uk=789116898

360云分享: http://yunpan.cn/cjJ4rWaT8bVRS 提取码 1e89

欢迎所有网友欣赏、验证下老男孩教育的教学效果

80%左右的同学均实现了一键自动化安装10台服务器集群

oldboy-1-中小规模集群项目实战分享述职-老男孩运维班26期冯泉-画图哥.avi

oldboy-2-中小规模集群项目实战分享述职-老男孩运维班26期万永振-万能哥.avi

oldboy-3-中小规模集群项目实战分享述职-老男孩运维班26期徐亮伟-思想哥.avi

oldboy-4-中小规模集群项目实战分享述职-老男孩运维班26期曹亚楠-文档哥.avi

oldboy-5-中小规模集群项目实战分享述职-老男孩运维班26期陈派宇.avi

oldboy-6-中小规模集群项目实战分享述职-老男孩运维班26期李峰.avi

oldboy-7-中小规模集群项目实战分享述职-老男孩运维班26期-于连辉-脚本哥.avi

oldboy-8-中小规模集群项目实战分享述职-老男孩运维班26期-侯亚光-PPT哥.avi

oldboy-9-中小规模集群项目实战分享述职-老男孩运维班26期王续.avi

oldboy-10-中小规模集群项目实战分享述职-老男孩运维班26期-蔚雷-雷神哥.avi

23期:

oldboy1-老男孩23期期中架构述职-何清1.mp4

oldboy2-老男孩23期期中架构述职-何清2.mp4

oldboy3-中小规模集群项目实战分享述职-老男孩23期谢迪.mp4

oldboy4-中小规模集群项目实战分享述职-老男孩23期李文学.mp4

oldboy5-自动化安装中小规模集群项目实战-老男孩23期李想.mp4

5、老男孩教育学员平均就业工资,连续多年在全国同行业排名绝对第一的位置,远远甩开所有同行机构N条街,学员后续的发展劲头更是一浪高过一浪,据不完全统计,运维经理及总监级别学员不低于50个,年薪30万以上的数百个。


如果你也想精通linux awk,sed,grep三剑客,可联系博客首页公布的老男孩教育顾问老师免费获取《跟老男孩学习Linux三剑客命令一书作者》一书电子版!

本文出自 “老男孩linux运维” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/1725148


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章