如何计算所有单个列(115列)的SUM?
INPUT.TXT
1st,2nd,3rd,4th,5th,Till-115thColumn
51,34,27,67,88,99
56,39,32,72,93,104
66,49,42,82,103,114
Run Code Online (Sandbox Code Playgroud)
Output.txt的
1st,2nd,3rd,4th,5th,Till-115thColumn
173,122,101,221,284,317
Run Code Online (Sandbox Code Playgroud)
我试过这个命令:
awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1 i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' Input.txt
Run Code Online (Sandbox Code Playgroud)
但我没有得到所需的输出.
fed*_*qui 11
这可以是一种方式:
awk 'BEGIN{FS=OFS=","}
NR==1{print}
NR>1{for (i=1;i<=NF;i++) a[i]+=$i}
END{for (i=1;i<=NF;i++) printf a[i] OFS; printf "\n"}' file
Run Code Online (Sandbox Code Playgroud)
它将逗号设置为输入/输出字段分隔符,然后将每列的总和存储在数组中a[].最后,它遍历结果并打印出来.注意NR==1是用户打印标题.
对于您的给定输入,它返回:
$ awk 'BEGIN{FS=OFS=","} NR==1{print} NR>1{for (i=1;i<=NF;i++) a[i]+=$i} END{for (i=1;i<=NF;i++) printf a[i] OFS; printf "\n"}' file
1st,2nd,3rd,4th,5th,Till-115thColumn
173,122,101,221,284,317,
Run Code Online (Sandbox Code Playgroud)
因为你错过了;在for宣言:
awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1 i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' a
awk: line 1: syntax error at or near )
Run Code Online (Sandbox Code Playgroud)
这样做:
$ awk -F"," 'BEGIN {sum=0; OFS=","} {for (i=1; i<=NF; i++) a[i]+=$i } END {for (i in a) print a[i]}' file
^
174
124
104
225
289
317
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12352 次 |
| 最近记录: |