fasta文件标题行到列中

时间:2015-12-30 15:43:55

标签: python unix awk sed

我有一个包含序列标题及其相应序列的fasta文件,如下所示:

>ID101_hg19
ATGGGTGTATCGTACCC
>ID102_hg19
AGCTTTAGCGGGGTACA

我想将标题行更改为序列旁边的另一个标签分隔列。这是所需的输出:

>ID101_hg19    ATGGGTGTATCGTACCC
>ID102_hg19    AGCTTTAGCGGGGTACA

有关如何执行此任务的任何想法?

3 个答案:

答案 0 :(得分:1)

使用Sed,你可以这样做:

sed 'N;s/\n/\t/' file.txt

使用awk,您可以执行以下操作:

awk '{getline a; printf("%s\t%s", $0, a);}' file.txt

答案 1 :(得分:1)

略微纠正SMA的答案......

awk'{getline a; printf(“%s \ t \ t%s \ n”,$ 0,a);}'file.txt

添加换行符

答案 2 :(得分:0)

通常,FASTA文件中的每个标题行后面都可以跟有多行数据,因此可能需要处理这种情况。如果目标是将所有连续数据行串在一起,那么以下内容将完成这项工作:

awk '/^>/ {if (prev) {print prev;}; prev=$0 "\t"; next}
     {prev=prev $0;} 
     END {print prev}'

另一方面,如果标题只附加到一行数据上,那么假设$' ...'语法可用,要使用的sed命令是:

sed $'/^>/ {N;s/\\n/\t/;}'