awk sum每第4个数字 - 字段

时间:2014-09-04 12:27:24

标签: linux awk

所以我的输入文件是:

1;a;b;2;c;d;3;e;f;4;g;h;5 
1;a;b;2;c;d;9;e;f;101;g;h;9 
3;a;b;1;c;d;3;e;f;10;g;h;5

我想将数字相加,然后将其写入文件(因此我需要每个4th字段)
我在网上尝试过很多例子,但我找不到答案
我的输出文件应该是:

159

谢谢!

更新

a;b;**2**;c;d;g
3;e;**3**;s;g;k
h;5;**2**;d;d;l

问题是一样的。

我想总结第3个数字(但在第3个数字的行中)。

所以2+3+2

输出:7

1 个答案:

答案 0 :(得分:3)

显然你想要每隔3个字段打印一次,而不是每隔4个字段打印一次。以下代码循环遍历所有字段,将每个字段汇总到3k+1位置。

$ awk -F";" '{for (i=1; i<=NF; i+=3) sum+=$i} END{print sum}' file
159

END {}块中处理整个文件后打印该值。