![使用 nawk,如何对 $1、$2 和 $3 字段中的所有数字求和?](https://linux22.com/image/1336361/%E4%BD%BF%E7%94%A8%20nawk%EF%BC%8C%E5%A6%82%E4%BD%95%E5%AF%B9%20%241%E3%80%81%242%20%E5%92%8C%20%243%20%E5%AD%97%E6%AE%B5%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E6%B1%82%E5%92%8C%EF%BC%9F.png)
使用 nawk,如何对 、 和 字段中的所有$1
数字$2
求和$3
?
8 6 2
7 3 5
1 9 4
我希望结果是 sum = 45
答案1
nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in
答案2
使用 awk:
awk '{x+=$0;}END{print x}' RS="[ \n]" file
无论行数或列数如何,此方法均可行。通过使用记录分隔符 (RS) 作为空格或换行符,每个值都会被拆分为单独的行,因此可以轻松添加。
答案3
您还可以使用 coreutils 和 bc:
<file head -c-1 | tr ' \n' '++'; echo) | bc
如果应该省略某些列,例如如果输入如下:
A 8 6 2
B 7 3 5
C 1 9 4
cut
可以选择想要的:
<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc
两种情况下的输出:
45