如何使用awk打印字段产品?

时间:2015-08-11 21:49:00

标签: awk

是否可以使用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

1 个答案:

答案 0 :(得分:5)

正如您可以使用+=一样,您可以使用*=

awk 'BEGIN { product = 1 } { product *= $2 } END { print product }'

请注意,在处理任何记录之前,我已在product块中将变量BEGIN初始化为1,否则它将为0,因此永远不会更改。

在这种情况下,你可能没有任何关心,但总的来说,当没有输入时,不输出任何东西是一个好政策。为此,您可以将END块更改为{ if (NR) print product },这样如果输入文件为空,则不会打印任何内容。