例如给出的
1 4 2 5 3 6
我想对第二列中的数字求和,并用它创建一个新列。新列是4、9(4 + 5)和15(4 + 5 + 6)
1 4 4 2 5 9 3 6 15
答案 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}}