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