Chinaunix
标题:
按学生顺序得到每个人的最高成绩以及科目
[打印本页]
作者:
chenjiali1
时间:
2020-04-27 23:28
标题:
按学生顺序得到每个人的最高成绩以及科目
成绩单如下
张三 78 语文
张三 71 数学
张三 87 政治
李四 96 语文
李四 92 数学
李四 80 政治
......
我想要的结果如下,输出每个人的最高成绩以及科目。
张三 87 政治
李四 96 语文
....
想要学生的顺序和成绩单中一样,即还是按照张三李四的顺序下来,谢谢大家!
作者:
chengchow
时间:
2020-04-28 09:22
[root@opsmanage18 ~]# awk '{$2" "$3>a[$1]?a[$1]=$2" "$3:a[$1]=a[$1]}END{for(i in a){print i,a[i]}}' aa.log
李四 96 语文
张三 87 政治
复制代码
作者:
Looiml
时间:
2020-04-28 19:17
回复
2#
chengchow
目测会有问题,100分会比95分小,而且数组的顺序是随机的。
作者:
cfwyy
时间:
2020-04-29 08:12
多门课成绩一样怎么办? 还要保证原始顺序,好像没那么简单
作者:
关阴月飞
时间:
2020-04-29 11:25
[ 本帖最后由 关阴月飞 于 2020-04-29 11:37 编辑 ]\n\n[ 本帖最后由 关阴月飞 于 2020-04-29 11:33 编辑 ]\n\n
awk '!t[$1]++{s[++n]=$1} $2>a[$1]{a[$1]=$2;b[$1]=$3}END{for(i=0;++i<=n; ) print s[i],a[s[i]],b[s[i]]}' urfile
#s[++n]=$1 保存学生顺序
#a[$1] 保存学生最高分数
#b[$1] 保存学生最高分数的科目
作者:
LikeLx
时间:
2020-05-06 14:25
awk 'a[$1]<$2{a[$1]=$2;c[$1]=NR;b[c[$1]]=$0}END{for(n=1;n<=asort(c,d);n++)print b[d[n]]}'
复制代码
作者:
LikeLx
时间:
2020-05-07 16:26
本帖最后由 LikeLx 于 2020-05-07 16:28 编辑
回复
4#
cfwyy
多门成绩相同,都显示
awk 'a[$1]<$2{a[$1]=$2;c[$1]=NR;b[c[$1]]=$0;next}a[$1]==$2{b[c[$1]]=b[c[$1]]"\n"$0}END{for(n=1;n<=asort(c,d);n++)print b[d[n]]}'
复制代码
作者:
寒枫1225
时间:
2020-05-07 17:18
#!/bin/bash
for i in `cat /root/11.txt|cut -f1 -d " "|uniq`
do
more 11.txt |grep $i|cut -f2 -d " "|sort > 13.txt;
max=`tail -1 13.txt`;
cat /root/11.txt|grep $max >> 12.txt;
done
作者:
wh7211
时间:
2020-05-07 22:24
回复
1#
chenjiali1
cat 1
张三 78 语文
张三 71 数学
张三 87 政治
李四 96 语文
李四 92 数学
李四 80 政治
张五 95 语文
张五 90 数学
张五 95 政治
张四 95 语文
张四 100 数学
张四 85 政治
awk '!a[$1]++{if(c){print c};b=c=""}{if(b<$2){b=$2;c=$0}else if(b==$2){c=c"\n"$0}}END{if(c){print c}}' 1
张三 87 政治
李四 96 语文
张五 95 语文
张五 95 政治
张四 100 数学
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2