値を追加

値を追加

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

元の質問のようにゼロで埋められた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 

関連情報