首页 > 解决方案 > awk:使用不同的分隔符打印每个学生的平均值以及给定的详细信息

问题描述

名为 as 的文件Input.txt具有以下数据:名称、班级、学校名称、标记 1 和标记 2,并带有#分隔符:

Deepu#First#Meridian#95#90
Neethu#Second#Meridian#80#75
Sethu#First#DAV#75#70
Theekshana#Second#DAV#80#79
Teju#First#Sangamithra#88#63
Theekshita#Second#Sangamithra#91#90

使用上述文件打印所有详细信息以及使用|分隔符作为输出的平均值。

我的答案:

awk 'OFS="|" { avg=0; for(i=4;i<=NF;i++){avg=($4+$5)/2;} print $1,$2,$3,$4,$5,avg}' Input.txt

我又尝试了一个命令:

awk 'OFS="|" {sum=0; for(i=4;i<=NF;i++) sum+=$i; print $1,$2,$3,$4,$5,sum/(NF-2)}' Input.txt

输出如下所示:输出图像

请帮助我获得所需的输出。

标签: linuxunixawk

解决方案


试试这个更简洁的方法:

awk -F# '{$(NF+1)=($4+$5)/2}1' OFS='|'

例如:

$ awk -F# '{$(NF+1)=($4+$5)/2}1' OFS='|' Input.txt
Deepu|First|Meridian|95|90|92.5
Neethu|Second|Meridian|80|75|77.5
Sethu|First|DAV|75|70|72.5
Theekshana|Second|DAV|80|79|79.5
Teju|First|Sangamithra|88|63|75.5
Theekshita|Second|Sangamithra|91|90|90.5

推荐阅读