UNIX Bash程序

问题描述 投票:1回答:3

学生详细信息如下存储在文件系统中:

Roll_no,name,socre1,score2
101,ABC,50,55
102,XYZ,48,54
103,CWE,42,34
104,ZSE,65,72
105,FGR,31,45
106,QWE,68,45

Q。将unix命令写到显示Roll_no和学生的名字] >>总得分大于100的学生要显示的详细信息按总得分的降序排列。

总分计算如下:-

totalscore =分数1+分数2

文件还包含标题(Roll_no,名称,socre1,score2)

我的解决方案

awk 'BEGIN {FS=",";OFS=" "} {if(NR>1){if($3+$4>100){s[$1]=$2}}} END{for (i in s) {print i,h[i]}}' stu.txt| sort -rk 2n

我不知道如何根据总分进行排序?请帮助大家!

学生详细信息存储在文件系统中,如下所示:Roll_no,name,socre1,score2 101,ABC,50,55 102,XYZ,48,54103,CWE,42,34 104,ZSE,65,72 105, FGR,31,45 106,QWE,68,45 Q.将unix命令写到...

shell unix awk
3个回答
2
投票

[请您试一下。为了简化计算(首先获取大于100的所有行的总数,然后按照OP按总数对它进行逆序排序,然后按cut仅打印前两列)


1
投票
$ awk 'BEGIN {OFS=FS=","} 
       NR==1 {print $0, "total"; next} 
             {if(($5=$3+$4)>100) print | "sort -t, -k5nr"}' file

Roll_no,name,socre1,score2,total
104,ZSE,65,72,137
106,QWE,68,45,113
101,ABC,50,55,105
102,XYZ,48,54,102

0
投票

您很接近:

© www.soinside.com 2019 - 2024. All rights reserved.