を使用して列値自体を乗算したいと思います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
}
この場合、行フィールドの積は、通常フィールドと区別するために「:」の次の行に追加されます。