对不起,如果我写的不好,这是我的第一篇文章。
我在一个文件中有一个列表,其中列出了学生的姓名,身份证,成绩等(见下文):
我想计算另一个文件中的平均标记,但是我不知道如何只取这些标记并将平均值写入另一个文件中。
谢谢;
#name surname student_index_number course_group_id lecturer_id list_of_marks
athos musketeer 1 1 1 3,4,5,3.5
porthos musketeer 2 1 1 2,5,3.5
aramis musketeer 3 2 2 2,1,4,5
while read line; do
echo "$line" | cut -f 6 -d ' '
done<main_list
答案 0 :(得分:1)
awk 'NR>1{n=split($NF,a,",");for(i=1;i<=n;i++){s+=a[i]} ;print $1,s/n;s=0}' input
athos 3.875
porthos 3.5
aramis 3
对于除了header(NR>1
以外的所有行,将过滤出header),选择最后一列并以逗号分隔为较小的数字。使用for loop
对所有标记的值求和,然后除以总主题数。
答案 1 :(得分:0)
(未经测试)
awk '{ n = split($6, a, ","); total=0; for (v in a) total += a[v]; print total / n }' main_list
答案 2 :(得分:0)
在纯BASH解决方案中,请您尝试一次。
while read first second third fourth fifth sixth
do
if [[ "$first" =~ (^#) ]]
then
continue
fi
count="${sixth//[^,]}"
val=$(echo "(${#count}+1)" | bc)
echo "scale=2; (${sixth//,/+})/$val" | bc
done < "Input_file"