在 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 标签:
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"。
我有文本 (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 标签:
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"。