首页 文章

如何使用sed重命名fasta文件头

提问于
浏览
1

我知道这很容易,但我不能让它工作 . 我试图使用sed重命名标头,虽然reg experssion工作,但我无法重命名fasta标头 . 这是一个小例子 . 我有一个多序列fasta文件,如下所示

>Bra000001
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT

现在我只想在这样的fasta Headers 末尾添加“Brassica rapa”

>Bra000001 Brassica rapa
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002 Brassica rapa
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT

我这样做是为了让它发挥作用

grep ">" in.fa | sed 's/$/ Brassica rapa/' > out.fa

但是通过这样做,我只能更改 Headers ,但这里没有序列信息 . 理想情况下,我想要更改 Headers 并保持序列不变 .

3 回答

  • 3

    您只能使用sed及其替换命令,检查该行是否以 > 字符开头,将整行分组并在末尾追加您的字符串,如:

    sed 's/^\(>.*\)$/\1 Brassica rapa/' infile
    

    它产生:

    >Bra000001 Brassica rapa
    CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
    AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
    >Bra000002 Brassica rapa
    TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
    TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT
    
  • 1

    awk 这很好又简单 .

    awk '/^>/ {$0=$0 " Brassica rapa"}1' in.fa >out.fa
    >Bra000001 Brassica rapa
    CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
    AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
    >Bra000002 Brassica rapa
    TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
    TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT
    
  • 4
    sed '/^>/ s/$/ Brassica rapa/' YourFile
    

    要么

    sed 's/^>.*/& Brassica rapa/' YourFile
    

相关问题