Linux中实现根据scaffold名称从fasta文件中提取数据(scaffold名称长)

 

001、

(base) [sy20213040737@admin2 test]$ ls
chr.list  test.fa
(base) [sy20213040737@admin2 test]$ cat test.fa          ## 测试fasta文件
>chr1 xxxx
aaaabbb
cccccddd
>chrx eee jj
aaaaaabbbbbc
cccccdddd
>chr3 iii rr
aaaaaaaaa
aaaaaaaaa
bbbbbbbb
>chry errrrr
aaaaaaaabbbb
bbbbbbbbb
>chrk iiiii
aaaaaaaaaaaaaaa
aaaaaaa
(base) [sy20213040737@admin2 test]$ cat chr.list          ## 提取的scaffold名称
>chr1 xxxx
>chr3 iii rr
(base) [sy20213040737@admin2 test]$ awk '{if(NR == FNR){ay1[$1]} else {if($0 ~ /^>/ && $1 in ay1){pass = 0} else if($0 ~ /^>/ && !($1 in ay1)) {pass = 1}; if(pass == 0) {print $0}}}' chr.list test.fa     ## 提取程序
>chr1 xxxx
aaaabbb
cccccddd
>chr3 iii rr
aaaaaaaaa
aaaaaaaaa
bbbbbbbb

 。

 

posted @ 2024-12-01 00:25  小鲨鱼2018  阅读(25)  评论(0)    收藏  举报