文件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")
)