arch文件里有3个域,依次为:NAME、sub1、sub2
需求1. :现在想把每个人的总成绩按高到低排序
[root@localhost tmp]# cat arch
A 80 90
B 85 95
C 93 88
D 79 90
E 75 99
[root@localhost tmp]# cat arch|awk '{print $1,($2 + $3)}'|sort -rk2
C 181
B 180
E 174
A 170
D 169
需求2:按每个人平均分由高到低排序,并在每条记录前加上序列号。如下:
[root@localhost tmp]# cat arch|awk '{total=$2+$3;print $1,total/2}'|sort -rk2|awk '{print NR".",$0}'
1. C 90.5
2. B 90
3. E 87
4. A 85
5. D 84.5
需求3:统计总分并按降序排列:
grades:
peter math 96
john math 92
john chinese 90
peter chinese 88
参考答案:
USER_LIST=`awk
'{print $1}' grades |sort|uniq`
for
i in $USER_LIST;do awk '{if ($1== "'"$i"'") sum +=
$3}END{printf "'"$i"'\t" sum"\n"}' grades;done |
sort -rnk2
peter 184
john 182
稍微讲解一下:
上面awk语句中使用单引号加双引号('""')将shell中的参数传递给awk
阅读(1784) | 评论(0) | 转发(0) |