
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