해결책

해결책

간단한 질문: 저는 간단한 스크립트를 작성해야 합니다. 그 중 일부는 열의 각 값을 합산하고 -> 각 열과 모든 것을 합산하는 것입니다. 그래서 파일

1 2 5
1 2
1

반환해야

column1: 3
column2: 4
column3: 5
sum: 12

내 코드는 거의 완벽하지만 열이 오름차순으로 표시되지 않습니다.

if [[ $# -eq 0 ]]; then
  awk  '{ for (i=1;i<=NF;i++) sum[i]+=$i }; END { for (i in sum) print "column "i" : " sum[i];}' file.txt
  awk '{for(i=1;i<=NF;i++) sum+=$i;}; END {print "sum: " sum}' file.txt
fi

출력은 다음과 같습니다

➜  script ./sum.sh
column 2 : 4
column 3 : 5
column 1 : 3
sum: 12

왜 2열부터 시작하나요?

답변1

for (variable in array)배열의 각 인덱스를 지정되지 않은 순서로 변수에 할당하여 반복해야 합니다.

해결책

if [[ $# -eq 0 ]]; then
    awk '(NF>m){m=NF}{for(i=1;i<=NF;i++)sum[i]+=$i}END{for(i=1;i<=m;i++)print("column "i" : "sum[i])}' file.txt
    awk '{for(i=1;i<=NF;i++)sum+=$i}END{print("sum: "sum)}' file.txt
fi

산출

column 1 : 3
column 2 : 4
column 3 : 5
sum: 12

관련 정보