Awk:打印原始值旁边的累积和

Awk:打印原始值旁边的累积和,awk,Awk,输入文本文件包含4个字段,由|分隔,如下所示: Name|Payment|Date|-900 Name|Invoice|Date|900 Name|Payment|Date|-900 Name|Invoice|Date|900 Name|Payment|Date|-900 Name|Invoice|Date|900 Name|Payment|Date|-900 Name|Invoice|Date|900 Name|Payment|Date|-900 Name|Invoice|Date|900

输入文本文件包含4个字段,由|分隔,如下所示:

Name|Payment|Date|-900
Name|Invoice|Date|900
Name|Payment|Date|-900
Name|Invoice|Date|900
Name|Payment|Date|-900
Name|Invoice|Date|900
Name|Payment|Date|-900
Name|Invoice|Date|900
Name|Payment|Date|-900
Name|Invoice|Date|900
以下脚本的目的是在$5中打印$4的累计金额。也就是说,在每一行的原始值$4旁边,打印所有上述值的总和

正如您在下面的实际输出中所看到的,已经实现了累积和,但是脚本中的某些内容导致输入文件的每一行都打印在预期输出的每一行下面

    $ awk -F '|' '{total += $4; print $0"|",total}1' infile.txt
预期产出:

Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
实际产量:

Name|Payment|Date|-900| -900
Name|Payment|Date|-900
Name|Invoice|Date|900| 0
Name|Invoice|Date|900
Name|Payment|Date|-900| -900
Name|Payment|Date|-900
Name|Invoice|Date|900| 0
Name|Invoice|Date|900
Name|Payment|Date|-900| -900
Name|Payment|Date|-900
Name|Invoice|Date|900| 0
Name|Invoice|Date|900
Name|Payment|Date|-900| -900
Name|Payment|Date|-900
Name|Invoice|Date|900| 0
Name|Invoice|Date|900
Name|Payment|Date|-900| -900
Name|Payment|Date|-900
Name|Invoice|Date|900| 0
Name|Invoice|Date|900

结尾处的
1
表示打印当前记录,这就是您看到DUP的原因。结尾处的
1
表示打印当前记录,这就是您看到DUP的原因。您可能希望选择另一个变量名称,以便此帖子可见,并且代码可以复制/粘贴到任何位置。我希望我是在开玩笑:-)。请参阅。您可能希望选择另一个变量名,以便此帖子可见,并且代码可以复制/粘贴到任何地方。我希望我是在开玩笑:-)。看见
$ awk -F'|' '{___+=$NF; print $0 FS ___}' file

Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0
Name|Payment|Date|-900|-900
Name|Invoice|Date|900|0