Command
使用 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}'
如果您事先知道列數:
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 }
在這種情況下,一行中的欄位乘積被附加到“:”之後的行中,以便將其與普通欄位區分開來。