linux 中 awk数组统计每列、行数据之和及平均值

发布时间 2023-07-23 22:11:51作者: 小鲨鱼2018

 

001、列

[root@PC1 test02]# ls
a.txt
[root@PC1 test02]# cat a.txt            ## 测试数据
3       6       2       8
2       5       8       4
1       3       8       2                          ## 统计每列数据之和
[root@PC1 test02]# awk '{for(i = 1; i <= NF; i++) {ay[i] += $i}} END {for(i = 1; i <= NF; i++) {print ay[i]}}' a.txt
6
14
18
14                                                 ## 统计每列数据的平均值
[root@PC1 test02]# awk '{for(i = 1; i <= NF; i++) {ay[i] += $i}} END {for(i = 1; i <= NF; i++) {print ay[i]/NR}}' a.txt
2
4.66667
6
4.66667

 

 

002、行

[root@PC1 test02]# ls
a.txt
[root@PC1 test02]# cat a.txt    ## 测试数据
3       6       2       8
2       5       8       4
1       3       8       2                      ## 每行数据之和
[root@PC1 test02]# awk '{for(i = 1; i <= NF; i++) {ay[NR] += $i}} END {for(i = 1; i <= NR; i++) {print ay[i]}}' a.txt
19
19
14                                             ## 每行数据的平均值
[root@PC1 test02]# awk '{for(i = 1; i <= NF; i++) {ay[NR] += $i}} END {for(i = 1; i <= NR; i++) {print ay[i]/NF}}' a.txt
4.75
4.75
3.5

 

 。