我有文本 (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",$1,$2}' infile-table.txt > outfile.fasta
最佳答案
您只是缺少“制表符分隔”位:
awk -F '\t' '{printf ">%s\n%s\n",$1,$2}' infile-table.txt
#...^^^^^^^
如果您愿意,awk 程序可以变得更简洁:将输出字段分隔符设置为换行符并且:
awk -F'\t' -v OFS='\n' '{$1 = ">" $1} 1' infile-table.txt
当您更改第一个字段时,awk 将使用 OFS 重新创建 $0,并且末尾的“1”将打印该记录。
而且,由于您添加了 sed标签:
sed 's/^/>/;s/\t/\n/' infile-table.txt
关于linux - 在linux中将tab转换为fasta格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788098/