값 추가

값 추가

foo.txt:

Lillypaul_sg
204803
204803
204803
Ammy_sg
3
ramaswamy_sg
3
33
tommy_sg
3
3
137374
100

예상하다 Out.txt:

Lillypaul_sg
614409
Ammy_sg
3
ramaswamy_sg
36
tommy_sg
137480

출력은 입력 파일에 있는 값의 합계입니다. 헤더에는 영숫자 값이 포함될 수 있지만 항상 "_sg"로 끝납니다.

답변1

awk '$0 == $0+0{
                summ += $0
                next}
               {
                if(summ)
                    format="%06d\n%s\n"
                else
                    format="%s%s\n"
                printf format, summ, $0
                summ=""}
     END       {
                if(summ)
                    printf "%06d\n", summ}' foo.txt

답변2

펄에서는:

$ perl -lne 'if(/_sg/){print "$n\n$s" if defined($n); $n=$_; $s=0;}
             else{$s+=$_}END{print "$n\n$s"}' file 
Lillypaul_sg
614409
Ammy_sg
3
ramaswamy_sg
36
tommy_sg
137480

원래 질문에서처럼 0으로 채워진 6자리 미만의 숫자를 원하는 경우:

$ perl -lne 'if(/_sg/){printf "%s\n%0.6d\n",$n,$s if defined($n); $n=$_; $s=0;}
             else{$s+=$_}END{printf "%s\n%0.6d\n",$n,$s}' file 

관련 정보