배열의 같은 열에 있는 숫자의 합을 구해야 합니다.
입력은 다음과 같습니다
1: 6.1703
44 3.5 0.3
46 7.3 2.3
2: 6.1932
44 5.29379 2.9
46 1.72261 7.2261
3: 6.5664
45 4.756 5.6
46 1.6 2.5
4: 8.0923
44 1.41 7.6
출력은 다음과 같아야 합니다.
1: 6.1703
10.8 2.6
2: 6.1932
7.01640 10.1261
3: 6.5664
6.356 8.1
4: 8.0923
1.41 7.6
답변1
약간 다른 접근 방식을 사용합니다 awk -v RS="" -f script data
. 여기서 스크립트는 다음과 같습니다.
{
s1 = s2 = 0;
for (i=4; i < NF; i = i + 3) {
s1 += $i;
s2 += $(i+1);
}
print $1, $2 "\n " s1, s2 "\n";
}
이는 "배열"이 빈 줄로 구분된다는 사실을 활용합니다.
답변2
노력하다
/:/ { if ( NR>1 ) printit() ; print ; two=0 ; three=0 ; next;}
NF > 2 { two+=$2 ; three+=$3 ; next }
{ print ; }
function printit() { printf " %s %s\n",two,three; }
END { printit() ;}
- 이 함수는
printit
실제 결과를 인쇄합니다. - 합계는 콜론( )이 있는 줄에서 계산됩니다
:
. END
최종 인쇄 조항.