文档章节

awk、ruby计算总分排名,相同总分显示同一名次

hell0cat
 hell0cat
发布于 2017/11/04 14:05
字数 1275
阅读 19
收藏 0

文件a.txt

考号	姓名	语文	数学	英语
70668	赵永刚	116	131	122
70646	张智文	109	116	125
70639	狄建译	109	68	126
70601	沙龙逸	123	148	136
70669	丁婉艺	95	71	85
70635	何旭	114	113	120
70653	王晟煜	79	49	64
70615	贺俊文	103	127	110
70633	范作鑫	121	127	131
70650	王春月	118	82	112
70667	张曦月	116	123	119
70606	李鉴学	126	135	140
70651	王治超	105	95	82
70605	杨璐	131	143	144
70638	代诗涵	105	105	126
70608	徐冲	122	124	139
70607	刘钰婷	115	139	135
70611	林世博	116	142	129
70620	裴子翔	111	139	128
70618	张智凯	110	117	119
70654	于娇莹	97	76	71
70657	吕文卓	82	53	62
70609	韩林霖	127	139	142
70640	臧云飞	101	59	108
70656	袁茂哲	85	95	85
70661	刘旭辉	99	87	44
70632	代明哲	101	91	115
70631	黄俊焯	101	112	106
70652	黄明涛	87	77	43
70614	刘姗	124	128	122
70649	李季	114	117	118
70643	张晓爽	113	113	119
70659	张宇婷	83	61	71
70619	任雪桐	124	108	144
70629	赵殿宇	112	109	130
70602	刘帅	116	143	140
70665	尹鸿涛	66	23	34
70610	张瑞鑫	126	115	139
70627	张俊奎	103	103	111
70637	姜美慧	117	121	106
70647	张家硕	107	67	129
70655	郭娜	94	98	104
70630	张开羽	112	90	104
70642	邹建志	98	104	116
70648	张良	105	102	105
70663	满朝升	78	45	47
70617	张埕镒	112	105	126
70616	康惠雯	114	142	139
70634	张馨月小	108	110	119
70641	孙波	96	130	89
70636	张馨月大	114	124	122
70645	杨加晖	110	102	136
70644	周坤	107	76	104
70603	王雪	131	135	144
70621	张希	123	130	134
70662	赵森	90	29	64
70613	王柏坤	121	123	128
70628	洪禹	106	100	80
70604	韩雨萌	129	133	138
70658	李忠浩	86	32	46
70625	武传禹	119	129	130
70624	胡丁文	116	122	118
70660	孙龙基	99	21	67
70623	卢一凡	121	123	139
70626	赵美欣	118	126	111
70622	艾宇	115	111	106
70612	苑宇飞	118	136	131
70664	侯禹志	75	23	34

awk代码:

head -n1 a.txt |awk '{print $0,"总分","排名"}' && tail -n +2 a.txt|awk '{print $0,$3+$4+$5}'|sort -k 6 -nr|awk '{n++; if(p==$6){print $0,v}else{print $0,n}; p=$6;v=n}'

输出结果:

考号	姓名	语文	数学	英语	总分	排名
70605	杨璐	131	143	144	418	1
70603	王雪	131	135	144	410	2
70609	韩林霖	127	139	142	408	3
70601	沙龙逸	123	148	136	407	4
70606	李鉴学	126	135	140	401	5
70604	韩雨萌	129	133	138	400	6
70602	刘帅	116	143	140	399	7
70616	康惠雯	114	142	139	395	8
70607	刘钰婷	115	139	135	389	9
70621	张希	123	130	134	387	10
70611	林世博	116	142	129	387	10
70608	徐冲	122	124	139	385	12
70612	苑宇飞	118	136	131	385	12
70623	卢一凡	121	123	139	383	14
70610	张瑞鑫	126	115	139	380	15
70633	范作鑫	121	127	131	379	16
70620	裴子翔	111	139	128	378	17
70625	武传禹	119	129	130	378	17
70619	任雪桐	124	108	144	376	19
70614	刘姗	124	128	122	374	20
70613	王柏坤	121	123	128	372	21
70668	赵永刚	116	131	122	369	22
70636	张馨月大	114	124	122	360	23
70667	张曦月	116	123	119	358	24
70624	胡丁文	116	122	118	356	25
70626	赵美欣	118	126	111	355	26
70629	赵殿宇	112	109	130	351	27
70646	张智文	109	116	125	350	28
70649	李季	114	117	118	349	29
70645	杨加晖	110	102	136	348	30
70635	何旭	114	113	120	347	31
70618	张智凯	110	117	119	346	32
70643	张晓爽	113	113	119	345	33
70637	姜美慧	117	121	106	344	34
70617	张埕镒	112	105	126	343	35
70615	贺俊文	103	127	110	340	36
70634	张馨月小	108	110	119	337	37
70638	代诗涵	105	105	126	336	38
70622	艾宇	115	111	106	332	39
70631	黄俊焯	101	112	106	319	40
70642	邹建志	98	104	116	318	41
70627	张俊奎	103	103	111	317	42
70641	孙波	96	130	89	315	43
70650	王春月	118	82	112	312	44
70648	张良	105	102	105	312	44
70632	代明哲	101	91	115	307	46
70630	张开羽	112	90	104	306	47
70647	张家硕	107	67	129	303	48
70639	狄建译	109	68	126	303	48
70655	郭娜	94	98	104	296	50
70644	周坤	107	76	104	287	51
70628	洪禹	106	100	80	286	52
70651	王治超	105	95	82	282	53
70640	臧云飞	101	59	108	268	54
70656	袁茂哲	85	95	85	265	55
70669	丁婉艺	95	71	85	251	56
70654	于娇莹	97	76	71	244	57
70661	刘旭辉	99	87	44	230	58
70659	张宇婷	83	61	71	215	59
70652	黄明涛	87	77	43	207	60
70657	吕文卓	82	53	62	197	61
70653	王晟煜	79	49	64	192	62
70660	孙龙基	99	21	67	187	63
70662	赵森	90	29	64	183	64
70663	满朝升	78	45	47	170	65
70658	李忠浩	86	32	46	164	66
70664	侯禹志	75	23	34	132	67
70665	尹鸿涛	66	23	34	123	68

Ruby:

#!/usr/bin/env ruby
class Array
    def sum_sort(title = "\tSUM\tNO.", offset=1)
        [self[0] + "#{title}"] + self[1..-1].map do |a| 
            [a, a.split(/[\s\t]+/)[offset..-1].map(&:to_i).sum]
        end.sort do |x,y| 
            y.last <=> x.last 
        end.reduce([]) do |s, a|
            s << (a << (!s.empty? && s.last[-2] == a.last ? s.last.last : 1 + s.size))
        end.map{|a| a * "\t" }
    end
end
File.write(
    "b.txt", 
    File.read("a.txt").split("\n")
    .sum_sort("\t总分\t排名", 2)
    .join("\n")
)

© 著作权归作者所有

共有 人打赏支持
hell0cat
粉丝 36
博文 48
码字总数 24082
作品 0
徐汇
程序员
私信 提问
Oracle排名函数(Rank)实例详解

--已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应函数:dense_rank,rank查询原始数据:学号,姓名,科目名,成绩 select * from t_score ·查询各学...

power_wang
2014/01/26
0
0
查询 按分数排名的学生名字

select t1.姓名, t1.总分, count( distinct t2.总分)as 名次 from 成绩 t1, 成绩 t2 where t1.总分 < t2.总分 or(t1.姓名=t2.姓名) group by t1.姓名,t1.总分 order by 名次...

BestDay
2018/03/07
0
0
Oracle中Rank()函数的使用(续)

声明:本篇文章是紧接着上一篇文章《》而写的,为了加深自己对RANK()函数和DENSERANK()函数的理解,我从网上找了一个例子,自己测试写代码,于是有了下面的文章。例子链接:http://www.doci...

EillenMe
2012/12/08
0
0
365GOLF 拉斯游戏的规则

高尔夫拉丝玩法说明 高尔夫球拉丝采用四人四球方式,根据预先协商或随机产生的方式,组成伙伴及对手,进行逐洞比杆记分比赛。比赛伙伴可以是固定伙伴或非固定伙伴。固定的伙伴则称为死拉,非...

casonlee
2015/12/07
2
0
学生成绩管理系统(C/C++语言)

某班级有学生若干人,学生的信息包括姓名、学号、进入系统的口令,该班级本学期开设4门课程,写一个程序,供3种人用: (1)班主任(老师编号、口令)用它可查看每位同学各门课程的总评成绩(...

做梦的人
2014/01/06
874
6

没有更多内容

加载失败,请刷新页面

加载更多

数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
12
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
2
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
0
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0
2019年阿里Java面试必问:JVM与性能优化+Redis+设计模式+分布式

前言 一年之计在于春 金三银四已经要到来,2019的新的开始,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是对...

火力全開
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部