awk를 사용하여 열 값 자체를 곱합니다.

awk를 사용하여 열 값 자체를 곱합니다.

을 사용하여 열 값 자체를 곱하고 싶습니다 awk. 어떻게 해야 하나요?

1  5 1
2  6 0 
3  7 3
4  8 5

산출

1X5X1 =5                  1  5 1 5
X X X
2X6X0 =0      ===>        2  6 0 0
X X X
3X7X3 =63                 3  7 3 63
X X X
4X8X5 =160                4  8 5 160
| | |                     | | |
V V V                     V V V          
24 1680 0                 24 1680 0

합계를 사용하는 방법을 알고 있지만 awk곱하는 방법은 무엇입니까?

awk '{sum2+=$2;  ... etc} END {print sum2,... etc}'

답변1

미리 열 수를 알고 있는 경우:

BEGIN { p1 = p2 = p3 = 1 }
{ p1 *= $1; p2 *= $2; p3 *= $3; print $0, $1 * $2 * $3 }
END { print p1, p2, p3 }

이는 모든 행에 원하는 개수의 열이 있을 수 있는 파일을 처리해야 합니다.

{
        for(i = p = 1; i <= NF; i++){
                s[i] = s[i] == "" ? $i : s[i] * $i; p *= $i
        }
        print $0, ":", p
        if(NF > mf) mf = NF
}
END {
        ORS="";
        for(i = 1; i < mf; i++) print s[i] FS;
        print s[i] RS
}

이 경우 행 필드의 곱은 일반 필드와 구별하기 위해 ":" 다음 행에 추가됩니다.

관련 정보