Command

使用 awk 將列值自身相乘

  • October 7, 2018

我想使用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}'

如果您事先知道列數:

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
}

在這種情況下,一行中的欄位乘積被附加到“:”之後的行中,以便將其與普通欄位區分開來。

引用自:https://unix.stackexchange.com/questions/473837