我如何总结bash中另一列的前n行

时间:2019-01-25 03:30:47

标签: awk

例如给出的

1 4
2 5
3 6

我想对第二列中的数字求和,并用它创建一个新列。新列是4、9(4 + 5)和15(4 + 5 + 6)

1 4 4
2 5 9
3 6 15

3 个答案:

答案 0 :(得分:1)

如果您对awk没问题,请尝试遵循。

awk 'FNR==1{print $0,$2;prev=$2;next} {print $0,$2+prev;prev+=$2}'  Input_file

OR

awk 'FNR==1{print $0,$2;prev=$2;next} {prev+=$2;print $0,prev}'  Input_file

说明: 现在添加上述代码的说明。

awk '                    ##Startig awk program here.
FNR==1{                  ##Checking condition if line is first line then do following.
  print $0,$2            ##Printing current line with 2nd field here.
  prev=$2                ##Creating variable prev whose value is 2nd field of current line.
  next                   ##next will skip all further statements from here.
}                        ##Closing block for FNR condition here.
{                        ##Starting new block here.
  prev+=$2               ##Adding $2 value to prev variable value here.
  print $0,prev          ##Printing current line and prev variable here.
}' Input_file            ##mentioning Input_file name here.

PS: 欢迎来到SO,您需要提及为解决问题而付出的努力,我们都在这里学习。

答案 1 :(得分:1)

这更惯用

$ awk '{print $0, s+=$2}' file

1 4 4
2 5 9
3 6 15

打印当前行和值s,该值随第二字段递增,换句话说,是滚动总和。

如果所有值均为正值(因此没有机会求和为0),但可以将其归纳为以下内容,但可能太神秘了。

$ awk '$3=s+=$2' file

答案 2 :(得分:0)

另一个awk ..

{{1}}