在 linux 中将制表符转换为 fasta 格式

Convert tab to fasta format in linux

我有文本 (infile-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

我试过但没有用的命令:

awk '{printf ">%s\n%s\n",,}' infile-table.txt > outfile.fasta

您只是缺少 "tab-separated" 位:

awk -F '\t' '{printf ">%s\n%s\n",,}' infile-table.txt
#...^^^^^^^

awk 程序可以做得更简洁一些,如果您愿意:将 output 字段分隔符设置为换行符并:

awk -F'\t' -v OFS='\n' '{ = ">" } 1' infile-table.txt 

当您更改第一个字段时,awk 将使用 OFS 重新创建 $0,并且尾随“1”打印记录。

而且,由于您添加了 标签:

sed 's/^/>/;s/\t/\n/' infile-table.txt

使用python!创建一个名为 "extract.py":

的文件
lines = open("infile-table.txt").readlines()

for line in lines:
    cols = line.split("\t")
    print(">"+cols[0]+"\n"+cols[1])

然后,运行 在终端中:"python extract.py"。