【发布时间】:2016-11-24 06:54:47
【问题描述】:
我有 2 个文件。一个是包含多个 fasta 序列的 fasta 文件,而另一个文件包含我要搜索的候选序列的名称(文件示例如下)。
seq.fasta
>Clone_18
GTTACGGGGGACACATTTTCCCTTCCAATGCTGCTTTCAGTGATAAATTGAGCATGATGGATGCTGATAATATCATTCCCGTGT
>Clone_23
GTTACGGGGGGCCGAAAAACACCCAATCTCTCTCTCGCTGAAACCCTACCTGTAATTTGCCTCCGATAGCCTTCCCCGGTGA
>Clone_27-1
GTTACGGGGACCACACCCTCACACATACAAACACAAACACTTCAAGTGACTTAGTGTGTTTCAGCAAAACATGGCTTC
>Clone_27-2
GTTACGGGGACCACACCCTCACACATACAAACACAAACACTTCAAGTGACTTAGTGTGTTTCAGCAAAACATGGCTTCGTTTTGTTCTAGATTAACTATCAGTTTGGTTCTGTTTGTCCTCGTACTGGGTTGTGTCAATGCACAACTT
>Clone_34-1
GTTACGGGGGAATAACAAAACTCACCAACTAACAACTAACTACTACTTCACTTTTCAACTACTTTACTACAATACTAAGAATGAAAACCATTCTCCTCATTATCTTTGCTCTCGCTCTTTTCACAAGAGCTCAAGTCCCTGGCTACCAAGCCATCG
>Clone_34-3
GTTACGGGGGAATAACAAAACTCACCAACTAACAACTAACTACTACTTCACTTTTCAACTACTTTACTACAATACTAAGAATGAAAACCATTCTCCTCATTATCTTTGCTCTCGCTCTTTTCACAAGAGCTCAAGTCCCTGGCTACCAAGCCATCGATATCGCTGAAGCCCAATC
>Clone_44-1
GTTACGGGGGAATCCGAATTCACAGATTCAATTACACCCTAAAATCTATCTTCTCTACTTTCCCTCTCTCCATTCTCTCTCACACACTGTCACACACATCC
>Clone_44-3
GTTACGGGGGAATCCGAATTCACAGATTCAATTACACCCTAAAATCTATCTTCTCTACTTTCCCTCTCTCCATTCTCTCTCACACACTGTCACACACATCCCGGCAGCGCAGCCGTCGTCTCTACCCTTCACCAGGAATAAGTTTATTTTTCTACTTAC
名称.txt
Clone_23
Clone_27-1
我想使用 AWK 搜索 fasta 文件,并获取名称保存在另一个文件中的给定候选人的所有 fasta 序列。
awk 'NR==FNR{a[$1]=$1} BEGIN{RS="\n>"; FS="\n"} NR>FNR {if (match($1,">")) {sub(">","",$1)} for (p in a) {if ($1==p) print ">"$0}}' name.txt seq.fasta
问题是我只能提取name.txt中第一个候选的序列,像这样
>Clone_23
GTTACGGGGGGCCGAAAAACACCCAATCTCTCTCTCGCTGAAACCCTACCTGTAATTTGCCTCCGATAGCCTTCCCCGGTGA
任何人都可以帮助修复上面的单行 awk 命令吗?
【问题讨论】:
-
您在发布答案后彻底改变了问题。我已经回滚了。请在这种情况下发布一个新问题。 (并展示您尝试从此处获得的答案中调整的内容)
-
我只能在 90 分钟内发布 1 个问题。我可以在回答会话中发布新示例吗?
-
嗯,其实还是推荐使用cmets或者re-edit question(因为我需要用format来展示例子)
-
不会被版主删除。使用 90 分钟自己思考解决方案怎么样?我想他们就是为此而生的。实际上只有 30 分钟,因为你在一小时前问过这个问题。
-
我建议您利用这段时间提出一个真正具有代表性的示例,这样我们就不会浪费更多时间来帮助您解决您没有遇到的问题。