awk: 从格式化的fasta中提取部分id的序列

这个是沙方客户提出来的需求,而我并不想给它写个脚本实现,就用了linux命令实现。简单快捷。

看两个fasta的格式,一个是单行的序列,一个是格式化后的序列

# test.fa
>id1_1
ATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCG
>id2_1
ATCGATCGATCGATCGATCGATCGATCGATCGATCGATCG
>id3_1
ATCGATCGATCGATCGATCGATCG
# test.fa
>id1_1
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCG
>id2_1
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCG
>id3_1
ATCGATCGATCGATCG
ATCGATCG

题目:提取id1和id2的序列,并组成fasta格式的文本

答案:

收集id的文本,命名为id.txt

id1
id2

第一种文本的代码:

$ grep -f id.txt test.fa -A 1
>id1_1
ATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCG
>id2_1
ATCGATCGATCGATCGATCGATCGATCGATCGATCGATCG

第二种文本的代码:

$ grep -f id.txt test.fa >full_id.txt
$ awk -v RS=">" -v FS="\n" -v ORS="" 'NR==FNR{a[$1]=$0;}NR>FNR{print ">"a[$1]}' test.fa full_id.txt |sed 's/>>/>/'
>id1_1
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCG
>id2_1
ATCGATCGATCGATCG
ATCGATCGATCGATCG
ATCGATCG

不用写代码,希望帮到你~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容