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

时间:2014-04-24 21:29:44

标签: sed fasta

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

>Bra000001
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT

现在我只想在这个

的fasta标题末尾添加“Brassica rapa”
>Bra000001 Brassica rapa
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002 Brassica rapa
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

它产生:

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

答案 1 :(得分:3)

awk这样做很简单。

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

答案 2 :(得分:1)

sed '/^>/ s/$/ Brassica rapa/' YourFile

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