我有一个像这样的文件
Anid|Mycfi2_180833_Genemark.11845_g scer|maker-scaffold119_size133949-snap-gene-0.138-mRNA-2
Medi|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 scer|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-6
Scer|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Oryz|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2
Usti|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Mfij|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2
Usti|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Anid|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2
Anid|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Medi|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2
实际上同一个文件中还有其他几列。我需要grep其中的一些id,例如我想要任何以Anid,Usti,Medi,Oryz开头的东西,如果它们在第1列或第2列中并不重要。但我只想要ID而不是整行。< / p>
我试过
awk '/^Anid| / {print $1}' data
确实给了我
Anid|Mycfi2_180833_Genemark.11845_g
Anid|Mycfi2_212664_estExt_fgenesh1_kg.C_120001
并从第二列中提取相同的内容我使用
awk '/^Anid| / {print $2}' data
Anid|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2
是否有一种有效的方法可以从单个文件中的第1列和第2列中的这4个单词开始获取所有ID?
答案 0 :(得分:1)
使用self.func2()
egrep -o
egrep -o "\<(Anid|Usti|Medi|Oryz)\S*"
暗示它必须是单词的开头。请注意,如果您在同一行上有两个匹配,则会打印两行(但我会假设您想要的是这样)