linux 中awk命令输出行、列的累加和

 

1、输出列的累加和

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
8 4 2
2 8 3
1 3 4
3 4 6
[root@PC1 test2]# awk '{sum += $1} {print sum}' a.txt    ## 第一列累加和
8
10
11
14
[root@PC1 test2]# awk '{sum1 += $1; sum2 += $2; sum3 += $3} {print sum1, sum2, sum3}' a.txt ## 1-3列累加和
8 4 2
10 12 5
11 15 9
14 19 15
[root@PC1 test2]# awk '{for(i = 1; i <= NF; i++) {sum[i] += $i; printf("%d ", sum[i])} {printf("\n")}}' a.txt
8 4 2                                                               ## 所有列累加和
10 12 5
11 15 9
14 19 15

 

 

2、输出行的累加和

[root@PC1 test2]# ls
a.txt
[root@PC1 test2]# cat a.txt
8 4 2
2 8 3
1 3 4
3 4 6
[root@PC1 test2]# awk 'NR == 1 {for(i = 1; i <= NF; i++) {sum += $i; printf("%d ", sum)} {printf("\n")}}' a.txt
8 12 14                                               ## 第一行累加和
[root@PC1 test2]# awk 'NR == 3 {for(i = 1; i <= NF; i++) {sum += $i; printf("%d ", sum)} {printf("\n")}}' a.txt
1 4 8                                                 ## 第三行累加和
[root@PC1 test2]# awk '{for(i = 1; i <= NF; i++) {sum[NR] += $i; printf("%d ", sum[NR])} {printf("\n")}}' a.txt
8 12 14                                               ## 所有行累加和
2 10 13
1 4 8
3 7 13

 

posted @ 2022-06-01 13:30  小鲨鱼2018  阅读(2086)  评论(0编辑  收藏  举报