linux - 求列中字段的平均值

标签 linux sed awk

我有这样的记录

1  11  11  T  A  0  0  A=1;B=2,C=3;D=4;

一共有8列,每列之间用制表符空格分隔

我需要的输出是这样的

1  11  11  T  A  0  0  A=1;B=2,C=3;D=4;AF=2.5;

哪里AF是第 8 列中所有字段的平均值。

AF=(1+2+3+4)/4=2.5

最佳答案

您输入的数据非常好:空格、逗号、分号...试试这个:

awk -F'[;, ]' '{n=0;s=0;for(i=1;i<=NF;i++)
if($i~/=[0-9]+/){split($i,t,"=");n++;s+=t[2]; } 
print $0"AF="s/n";"
}' file

使用您的数据:

kent$  echo "1 11 11 T A 0 0 A=1;B=2,C=3;D=4;"|awk -F'[;, ]' '{n=0;s=0;for(i=1;i<=NF;i++) 
if($i~/=[0-9]+/){split($i,t,"=");n++;s+=t[2]; }
print $0"AF="s/n";"
}' 
1 11 11 T A 0 0 A=1;B=2,C=3;D=4;AF=2.5;

关于linux - 求列中字段的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15519733/

相关文章:

c++ - 在 Xcode 中导入 C++ 项目

regex - 如何从 bash 脚本关闭所有不运行任何内容或 iPython 的终端

string - 如何使用 sed 在 bash 脚本中追加字符串?

linux - 从 bash 脚本调用时,Sed 命令无法正确执行,从提示符调用时工作正常

bash - 为什么 awk 不在这里创建文件?

Linux bc 命令总计数

用于过滤 git status 命令的 Linux Shell 脚本

linux - 如何使用sed从文本文件中获取变量?

json - 搜索并替换很大文件中的字符串

shell - awk - 计算文件内容