gawk:从记录到另一个记录的总和

时间:2016-09-22 02:55:24

标签: gawk

我有下表:

login:numero:sobrenome:nome   
INICIO    
Alcala:1234:Thomas:Alcala
Baron:1235:Alexis:Baron
Bezier:1236:Pascal:Bezier
Boutier:1237:Damien:Boutier
Buard:1238:Jeremy:Buard
Fagour:1239:Dimitri:Fagour
Fagour:1240:Stephane:Fagour
Justice:1241:Jonathan:Justice
FIM
Numero de usuario = 15

我想将Bezier线的总和归还给Buard。 我尝试了以下命令:

gawk '/Bezier/{init=NR}/Buard/{fin=NR}NR>=$init{Sum1+=$2}NR>$fin{Sum2+=$2}END{Sum=Sum1-Sum2;print Sum}BEGIN{FS=":"}' arq_test_awq

但是没办法,Sum2总是以/ Buard / line开头。即使我把“fin = NR + 1”,结果也一样。我可以从/ Fagour /开始解决问题,但我无法理解为什么它不适用于此版本。

1 个答案:

答案 0 :(得分:1)

检查这些是否是感兴趣的记录

$ awk -F: '/Bezier/,/Buard/' file
    Bezier:1236:Pascal:Bezier
    Boutier:1237:Damien:Boutier
    Buard:1238:Jeremy:Buard

总结第二个字段并在结尾打印

$ awk -F: '/Bezier/,/Buard/{sum+=$2} END{print sum}' file
3711