【发布时间】:2019-02-22 21:37:22
【问题描述】:
我有以下代码行:
grep -nP ';MULTIALLELIC' biallelic.output | sort -k2 | awk -F'[:;\t]' '{print $1,$3,$9,$13}'
它输出:
2374 213 MID=212 GO=1
2462 213 MID=477 GO=137
2394 233 MID=232 GO=1
2464 233 MID=668 GO=1070
2185 24 MID=23 GO=1
2465 24 MID=752 GO=1083
2146 48 MID=354 GO=1010
1893 48 MID=47 GO=1
2219 58 MID=57 GO=1
2463 58 MID=595 GO=1057
我需要根据第二列中的值比较 GO 值。无论哪一行的 GO 值较大,我都想从原始文件中删除该行号。
通过添加awk '{print>$2}',我可以根据第二列中的值分隔行,但我试图避免将结果写入文件。
我错过了什么?
编辑:我实际上是在尝试从 biallelic.output 中删除这些行,而不仅仅是打印我想要删除的行。很抱歉造成混乱。
【问题讨论】:
-
您是在比较 GO 值还是与 $2 比较?
-
2 美元。我想将所有行与 $2 中的相等值进行比较。因此,在我的示例中,我将比较第 1 行和第 2 行,因为它们的 $2 值均为 213。然后比较这些行的 GO 值并从 biallelic.output 中删除第二行,因为 1037 > 1。
-
为了一目了然,将第二行的 GO 值更改为 137。
-
但是,您并没有真正删除任何记录,而只是报告需要完成的工作。我猜你想要一个删除了这些记录的文件,不是吗?
-
我实际上想删除这些行,这是我的错,造成混乱。问题已被编辑。