在linux中将tab转换为fasta格式
我有一个文本(在linux中将tab转换为fasta格式,linux,bash,awk,sed,bioinformatics,Linux,Bash,Awk,Sed,Bioinformatics,我有一个文本(infle table.txt)文件,其中两列由如下制表符分隔: TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2] TTGGCTGGAATTCAAAAGCTTTCGATT TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2] CGAGCTTGGGTAAATGGGATCAAACTAGATTA len=298 path=[1:0-297
infle table.txt
)文件,其中两列由如下制表符分隔:
TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2] TTGGCTGGAATTCAAAAGCTTTCGATT
TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2] CGAGCTTGGGTAAATGGGATCAAACTAGATTA
len=298 path=[1:0-297] [-1, 1, -2] GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC
>TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2]
TTGGCTGGAATTCAAAAGCTTTCGATT
>TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2]
CGAGCTTGGGTAAATGGGATCAAACTAGATTA
>len=298 path=[1:0-297] [-1, 1, -2]
GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC
我想这样转换它们:
TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2] TTGGCTGGAATTCAAAAGCTTTCGATT
TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2] CGAGCTTGGGTAAATGGGATCAAACTAGATTA
len=298 path=[1:0-297] [-1, 1, -2] GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC
>TRINITY_DN5561_c0_g1_i1 len=391 path=[369:0-390] [-1, 369, -2]
TTGGCTGGAATTCAAAAGCTTTCGATT
>TRINITY_DN15396_c0_g1_i1 len=235 path=[213:0-234] [-1, 213, -2]
CGAGCTTGGGTAAATGGGATCAAACTAGATTA
>len=298 path=[1:0-297] [-1, 1, -2]
GCTGTGATTTCTGCCATCGGAGAGGGCACAGACGGC
我尝试过的命令无效:
awk '{printf ">%s\n%s\n",$1,$2}' infile-table.txt > outfile.fasta
您只是缺少“制表符分隔”位:
如果您愿意,可以将awk程序简化一点:将输出字段分隔符设置为换行符,然后:
awk -F'\t' -v OFS='\n' '{$1 = ">" $1} 1' infile-table.txt
当您更改第一个字段时,awk将使用OFS重新创建$0,后面的“1”将打印记录
而且,由于您添加了标记:
使用python!创建一个名为“extract.py”的文件:
然后,在终端中运行:“python extract.py”。太棒了!谢谢你的解释。为什么你认为它不起作用?@ghoti当然,我不知道如何在awk中选择
\t
功能。
lines = open("infile-table.txt").readlines()
for line in lines:
cols = line.split("\t")
print(">"+cols[0]+"\n"+cols[1])