1.Seqkit提取
seqkit作为一个非常全能的软件,之前有多次利用到,本来早就该学习了,却一直拖欠了下来。这次要进行一个cds序列的提取,所以在此做一个记录。
目标:将含有多个转录本的Pep文件提取出只有t1序列。
提取现在文件的id序列表
seqkit seq pep.fa -n -i -o ft.lst
将id表中的t1保留,其余删除
grep “.t1” ft.lst >ftnew.lst
根据新的id表提取序列
seqkit grep -f ftnew.lst pep.fa -o pepnew.fa
2.awk提取
由于文件给的是多行序列,利用awk时,可以先将多行序列变为一行,再运行,代码如下:
(1)多行变一行
awk '/^>/&&NR>1{print "";}{printf "%s",/^>/?$0"\n":$0}' pep.fa >pep1.fa
/^>/&&NR>1{print "";}表达的意思是开头为>且行数大于1时,打印一个换行符换行
printf表达的意思是格式打印,%s就是打印字符串
/^>/?$0"\n":$0 是一个二维判断运行结构,?前表示匹配条件,如果匹配前面的条件,运行:前的命令,如果不匹配,运行:后面的内容,即,如果该行以>开头,就是标题行,打印该行($0)并换行(“\n”),如果不匹配,直接打印该行。
(2)如果识别到t1,则打印这行以及下一行,并继续识别下一行。
awk '/t1/{print;getline;print;next}' pep1.fa>pep2.fa