Awk 在数据中查找序列

Awk 在数据中查找序列,awk,Awk,我想用awk来寻找DNA数据中的模式序列,但我不知道怎么做。我有一个文本文件“test.tx”,其中包含大量数据,我希望能够匹配以ATG开始,以TAA、TGA或TAG结束的任何序列,并打印它们 例如,如果我的文本文件包含如下所示的数据。我希望找到并匹配所有现有序列和输出,如下所示 AGACGCGGAAGGTCCGAGACATCGGCCTATTTCGTCTTGCTGCTCGAATAAACGAGTTTGGCTTATCGAATCTCGCGTAAGGTCGAAACGGCCGGGTCAGTCGAATCG

我想用awk来寻找DNA数据中的模式序列,但我不知道怎么做。我有一个文本文件“test.tx”,其中包含大量数据,我希望能够匹配以ATG开始,以TAA、TGA或TAG结束的任何序列,并打印它们

例如,如果我的文本文件包含如下所示的数据。我希望找到并匹配所有现有序列和输出,如下所示

AGACGCGGAAGGTCCGAGACATCGGCCTATTTCGTCTTGCTGCTCGAATAAACGAGTTTGGCTTATCGAATCTCGCGTAAGGTCGAAACGGCCGGGTCAGTCGAATCGGCGCGCTCAGTAGCGAAGTACAATGGG
GTCCGCGAATTTTCGGTTCGTCGCTTTCGCGCAGTTATGGATCAGACCCGCTCTGAATTACTCATACTCATACTCATACTCAGAATTATAAACGCAGCGCTCTCGGCGCTCGGGCCCGGCGCGCGGACTCTCGCGGGAGGCGCAGGCAGTTTCGAAGTTC
GGATGATATCAGATCTCGGCAATCGACGTTCGGGCCGTAGCGAACTGCGAATTCGAATTCGAATTCGAATTCGATCGGGCTTGAGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGAATGCGCGAATGCGCGCGAATGCGAATGCGAATGCGAATGCGATCGATCAGAGAGAGAGAGATGCAGATGCAGATGCAG
AAAGTATGTTTTCGATCCGCGCGCATTCAGATCGACCTCAGATCGGAAGCTTAAATTCAATCAAATGGGACGCCCCGAGGCGACCGTATAGATCGATCCGCTGCTCGCGATTCGACGGTGAA

ATGAGACCGGGCGATCGCCGACTGTGCCAACCCCTACGGCTTCTGG
请尝试以下内容

awk 'match($0,/ATG.*TAA|ATG.*TGA|ATG.*TAG/){print substr($0,RSTART,RLENGTH)}' Input_file

假设记录不跨越多行

$ grep -oP 'ATG.*?T(AA|AG|GA)' file

ATGGATCAGACGAACCCGCTCTCTGA
ATGATATCGACCATCTCGGCAATCGACGCGTTCGGGCCGTAG
ATGTTTTTCGATCCGCGCCGATTCGACCTCTCAAGAGTCGGAAGGCTTAA
ATGGGACGCCCCGAGCGCGACCGTATAG
ATGGATTTCATCGACGTTGTGA

非贪婪匹配,需要
-p
开关(以查找第一个匹配,而不是最长的匹配)。

尝试:
grep-Eo'ATG.*(TAA | TGA | TAG)'test.txt
目标序列是否始终包含在一行中,或者是否可以跨行?一条线上是否会出现多个序列?字符串ATG、TAA、TGA或TAG是否仅在序列开始/结束时的一行上出现一次,或者是否可以出现多次?如果它们可以出现多次,序列是在最近的一对终止符之间还是在距离最远的一对终止符之间?不应该跨越线路,是的,一条线路内可能出现多个序列。它们可以出现多次。是的,它们可以在最接近的一对之间移动。
/ATG.*TAA | ATG.*TGA | ATG.*TAG/
=
/ATG.*T(AA | GA | AG)/
谢谢,我试过了,但遗漏了一些sequence@user11766958使
awk
匹配为非贪婪的并不容易。