bash - 将每行中的所有数字相加,并将它们的平均值添加到行尾 Bash
问题描述
任务是:使用 awk 命令对每行中的所有数字求和,并将平均值添加到每行的末尾。不必每行具有相同数量的数字。例子:
Steven 1 2 3 4 5
Mark 2 3 4
Joe 3 5 5 6
所以结果应该是
Steven 1 2 3 4 5 3
Mark 2 3 4 3
Joe 3 5 5 6 5
我不太清楚如何根据 awk 对数字求和,以及如何将平均值添加到行尾,因为行的长度可能不同。谢谢
解决方案
awk '{ sum = 0;
for (i = 2; i <= NF; ++i)
sum += $i
$(++NF) = int (sum / (NF - 1) + 0.5)
} 1' file
int (sum / (NF - 1) + 0.5)
将平均值四舍五入到最接近的整数,1
最后意味着在处理后打印每一行。
上面的命令产生:
Steven 1 2 3 4 5 3
Mark 2 3 4 3
Joe 3 5 5 6 5
推荐阅读
- java - 如何修复android工具栏中的重复项,(需要删除工具栏上的菜单项)?
- google-kubernetes-engine - 无法从部署在 GKE 中的 ISTIO 访问 cassandra
- python-3.x - 努力将方法调用到另一个类
- git - Visual Studio Git 详细信息
- php - 在用户无法查看数据的情况下将 php 数据转换为 html
- python - 如何使用python在csv文件中写入包含逗号的列表?
- python - Python - 在函数之间使用变量
- delphi - 根据按钮的用途创建框架
- sql - 从列生成额外的 SQL 行
- google-app-engine - Google App Engine 标准环境中的 Gunicorn 命令行错误