linux - awk:使用不同的分隔符打印每个学生的平均值以及给定的详细信息

标签 linux unix awk

名为 Input.txt 的文件包含名称、类(class)、学校名称、marks1 和 marks2 等数据,以 # 分隔符:

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

输出如下所示:Output image

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

最佳答案

尝试这种更简洁的方式:

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

关于linux - awk:使用不同的分隔符打印每个学生的平均值以及给定的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610666/

相关文章:

linux - 如何将所有传入的连接数据包传递给 NFQUEUE

linux - 如何增加 VirtualBox 屏幕的尺寸?

unix - mkdir 的 "-p"选项

Unix 压缩子目录不包括父目录

linux - 从 Linux 控制台的输出中提取字符串

linux - 比较两个文件并合并数据

c - volatile 关键字用于指针数组对象,用于经常变化的网络数据包信息容器 C

linux - Bash 脚本从源文件读取变量显示没有这样的文件或目录错误

unix - vm.max_map_count和mmapfs

linux - 如何获取上个月创建的所有文件的行数?