【发布时间】:2016-06-02 14:07:00
【问题描述】:
我有一个包含遗传数据的非常大的文本文件(94,807,000 行)。我想提取特定列中出现特定模式的行。我尝试以各种方式使用 awk 和 grep,但没有找到完成工作的方法。该文件以空格分隔,如下所示:
V1 V2 V3 V4 V5 V6
1: 10 179406 T . HPGM T,T,T,T
2: 10 179407 T . HPGM T,T,T,T
3: 10 179408 G . HPGM G,G,G,G
4: 10 179409 A . HPGM A,A,A,A
5: 10 179410 A . HPGM A,A,A,A
6: 10 179411 T . HPGM T,T,T,T
V5 和 V6 可以有比这里显示的四个条目更多的条目,所有内容可能看起来很奇怪,例如:
V1 V2 V3 V4 V5 V6
1: 1 158154514 A . HPGO A,AAAA..204..TTTT,A,A
我想保留 H 和 P 的 both 条目(V6 中的前两个逗号分隔字符)恰好是 A, C、T 或 G,所以应该只有这四个字符之一。但是,H 和 P 不必具有相同的字符。在V5 中可以出现多个组合,但都以HP 开头。我不感兴趣之后是否有任何条目或有多少条目,并且所有行确实有 H 和 P 条目,因此我不必处理丢失的条目。
我找到了一些答案,这些答案显示了如何使用逻辑或 || 搜索多个模式。 ,其中一些显示如何使用$6 ~ '/A,.' 在特定字段中查找,以及如何使用== "pattern" 查找精确匹配项。但是,我没有找到组合这些东西的答案,也无法自己弄清楚。非常感谢您的帮助。
【问题讨论】:
-
您认为什么是“H 和 P 的条目”。
V5看起来像HPGM或HPGO是否被视为“H 和 P 的条目”?如何判断这些 H 和 P 条目是 A、C、T 还是 G?就像 V6 中的所有值都不能包含 A、C、T 或 G 值以外的任何值?我认为这个逻辑对你来说非常有意义,但它并没有以不熟悉这个基因数据文件的人能够理解的方式来解释。 -
抱歉不清楚。 H 和 P 的条目是 V6 列中的前两个字符。在大写(6 行)中,一切看起来都很好。但是,在小写字母(1 行)中,P 的条目是
AAAA..204..TTTT- 这些行应该被排除在外。在V5中可以出现多种组合,但都以HP开头。最后,所有行看起来应该有点像上面的 6 行。我只想排除包含有趣内容的行,例如AAAA..204..TTTT。更一般地说,V6 中的前两个逗号分隔位置应该有 恰好一个字符,即 A、C、T 或 G。