-1

我有一个序列,例如:

>sequence.fasta
GATCCAAAACACATTCTCCCTGGTAGCATGGACAAGCAACATTTTGGGAGAAATGGAGCAAAAAAACATA
AACTTCACAGTAACAAACATAAACACTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTCTC
TCTCTCTCCACACACACACACACTCGCACTCACAGCCTCACAACACAGGTATACATGTTTACTTAGGTCA
CTCAGAATTGTAAACTGTAAGTGTGCCTTGCAAAGAACCACTGCTCCTTACAGTGAGCAGTGCTTACCTG

并使用此代码:

awk '{if (NR!=1) {printf $0}}' sequence.fasta | awk '{sub(/ATG/, "\n&")}1' | awk 'NR==2' | fold -w 60 | awk '{gsub(/.../,"& ")}1'

我产生这个输出(一个例子):

ATG TTA ACT TTT ACA TGT TAC CTT TTG ATG TGT GAT GAG AAG ATG ACG ACT CAT TAG AAT 
GCT TTT TAG GCA ATC TTC AAG AGT ATT TTA CTA CTT TTG AAA ATA AAT AAA TAA ATT CAA 
ATT TTA TTC TTA AAA ATC TAT AAT TTT TTG TAT TAA CCA AAC TTA AAT ATC CAA GTA AGG 
GCT GTT AGA TAA GAT AGG TGA TAT TTC TCA AGT AGA TTT ACA TTT TAT AAT GCT CTC CAA 
ATG ATC TTA ATG GTT AAA TCT AAG TTT TTA TTC TTA CCT GTA TGA AAA TAC AAA GTT TAT 

我想找到“TAA”、“TGA”或“TAG”,并从第一个元素(ATG)输出到“TAA”、“TGA”或“TAG”......所需的输出:

ATG TTA ACT TTT ACA TGT TAC CTT TTG ATG TGT GAT GAG AAG ATG TGA
4

2 回答 2

0

使用此代码由我自己解决:

awk '{for (i=1; i<=NF; i++) {printf $i" "; if ($i~/TAA/ || $i~/TAG/ || $i~/TGA/) {exit}}}'
于 2013-11-08T16:07:08.903 回答
0

像这样?如果命中,它会搜索任何TAA TGA TAG一行并打印第一列。

awk '/TAA|TGA|TAG/ {print $1}'
ATG
GCT
ATT
GCT
ATG
TCA
ATA
TAT
TGA
于 2013-11-08T11:10:38.933 回答