首页 文章

fasta文件 Headers 行到列中

提问于
浏览
1

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

>ID101_hg19
ATGGGTGTATCGTACCC
>ID102_hg19
AGCTTTAGCGGGGTACA

我想将 Headers 行更改为序列旁边的另一个制表符分隔列 . 这是所需的输出:

>ID101_hg19    ATGGGTGTATCGTACCC
>ID102_hg19    AGCTTTAGCGGGGTACA

关于如何完成这项任务的任何想法?

3 回答

  • 1

    使用Sed,你可以这样做:

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

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

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

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

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

    添加换行符

  • 0

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

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

    另一方面,如果 Headers 只附加到一行数据,那么假设$'...'语法可用,则使用的sed命令为:

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

相关问题