是否可以使用awk打印整个字段的产品?
这在R中很简单,但如果可以在awk中完成,则调用R脚本会很麻烦。
示例输入:
gene1 0.9
gene2 0.8
gene3 0.4
gene4 0.2
所需输出(0.9 x 0.8 x 0.4 x 0.2):
0.0567
它是否与sum
语法类似?像
awk '{ sum +=$2 } END { print sum }'
但是改为使用mult
?
答案 0 :(得分:5)
正如您可以使用+=
一样,您可以使用*=
:
awk 'BEGIN { product = 1 } { product *= $2 } END { print product }'
请注意,在处理任何记录之前,我已在product
块中将变量BEGIN
初始化为1,否则它将为0,因此永远不会更改。
在这种情况下,你可能没有任何关心,但总的来说,当没有输入时,不输出任何东西是一个好政策。为此,您可以将END
块更改为{ if (NR) print product }
,这样如果输入文件为空,则不会打印任何内容。