각 열에 대해 특정 행의 행렬 요소를 합산해야 합니다. 행렬(입력)의 예가 아래에 나와 있습니다. 따라서 행렬에는 4개의 열과 6개의 행이 있습니다. 열당 특정 수의 행을 합산해야 합니다. 즉, 각 열에 대해 row1 + row2 + row5와 row3 + row4 + row6의 요소를 합산해야 합니다.
입력하다:
column1 column2 column3 column4
11.1 12 13 4
21.3 22 23 3
31 32 33 45
41 42 43 536
23 32 6 5
4 5 3 2
출력은 아래와 같아야 합니다.
column1 column2 column3 column4
55.4 66 42 12
76 79 79 583
나는 awk
이것을 다음과 같이 사용하려고합니다 :
awk 'NR==1{$1=$1; print; next} !(NR%2){split($0,a); next} {for(i=1;i<=NF;i++) $i+=a[i]}1' file
하지만 기대한 결과를 얻을 수는 없습니다.
답변1
KISS는 다음에서 구현됩니다 awk
.
awk '
FNR == 1 {
n=NF;print;next
}
FNR == 2 || FNR == 3 || FNR == 6 {
for (i=1;i<=NF;i++) a[i]+=$i;
}
FNR == 4 || FNR == 5 || FNR == 7 {
for (i=1;i<=NF;i++) b[i]+=$i
} END {
for (i=1;i<=n;i++) printf("%8s", a[i]); print "";
for (i=1;i<=n;i++) printf("%8s", b[i]); print "";
}
' file