我寻求您的帮助,以使用 if else 条件将 awk 返回值存储在我的 awk for 循环的数组中。
If $3 == $7
then print $9 multiplied by $4
else print $4 multiplied by (2 minus $9)
到目前为止,我通过以下方式完成了这项工作:
awk '{if ($3 == $7) print $9*$4; else print $4*(2-$9);}' file >outfile
上面的代码适用于第一个数据列 ( $9
)。但是,我想遍历从 9 到 1547 的所有列并返回一个包含返回值的数组。这应该很简单,但我似乎无法理解这里的一些基本概念。
到目前为止,我了解需要在实际函数之前声明循环数,方法是:
awk ' {for(i=9;i<=NF;i++)} END {if ($3 == $7) print $i*$4; 否则打印 $4*(2-$i);}'
但是,如何以及何时声明数组超出了我的范围(生物学家)。任何帮助将不胜感激。
例子:
输入(大文件..此处第 1-10 列):
rs2070501 22 A 0.0206 0.337855 rs2070501 GA 0.977 0.066
输出:
0.0210738
这里 else 语句开始了 ($3 * (2-$9)
如何让 awk 打印出第 9-N 个数组,而不仅仅是第 9 列