【发布时间】:2015-11-15 00:24:20
【问题描述】:
我想打印文件的行,直到第三个字段的累积和大于 0.99,然后只打印累积和大于或等于 0.99 的第一行。但是,如果字段 3 的累积总和大于或等于 0.99 的第一行字段 2 与下一行的字段 2 匹配,则应打印两行。
我的文件看起来像:
rs76832595 -4.4524 0.501109
rs74660964 -4.9815 0.49886
rs12992037 -4.9815 9.8159e-06
rs934367 -4.3376 3.06953e-06
期望的输出:
rs76832595 -4.4524 0.501109
rs74660964 -4.9815 0.49886
rs12992037 -4.9815 9.8159e-06
在上面的示例中,第 2 行的字段 3 的累积和超过了 0.99,但我也打印了第 3 行,因为第 2 行和第 3 行的字段 2 相等。如果这些字段不相等,我将只打印出第 1 行和第 2 行。
我有以下命令,它适用于累积和,但不适用于比较相邻行之间的字段 2:
awk '{sum+=$3;print $0;if(sum>=0.99)exit}' file
有人可以修改它以纳入上述要求吗?
【问题讨论】:
标签: awk