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