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