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

upe*_*dra 1 sed fasta

我知道这很容易,但我无法让它发挥作用。我正在尝试使用 sed 重命名标头,尽管 reg experssion 有效,但我无法重命名 fasta 标头。这是一个小例子。我有一个像下面这样的多序列 fasta 文件

>Bra000001
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT
Run Code Online (Sandbox Code Playgroud)

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

>Bra000001 Brassica rapa
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002 Brassica rapa
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让它工作

grep ">" in.fa | sed 's/$/ Brassica rapa/' > out.fa
Run Code Online (Sandbox Code Playgroud)

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

Bir*_*rei 5

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

sed 's/^\(>.*\)$/\1 Brassica rapa/' infile
Run Code Online (Sandbox Code Playgroud)

它产生:

>Bra000001 Brassica rapa
CTTATTTTCTCCTTCACCACCGTACCACAGAAAAAAACTGTGATTTTAAA
AGCCACATTTACTTCTTTTTTTGTTGGGTCTAAATGTTAAAATAACATGT
>Bra000002 Brassica rapa
TTTATGTAGTACTGGACTAATCGGGTAGGGAAACAATCTTGATTTAGCAA
TACAGTGTAATAACTAATAATCATATTCATATTCCATAAATCCAAATGTT
Run Code Online (Sandbox Code Playgroud)

  • 这可能更简单一些: `sed '/^>/ s/$/ Brassica rapa/'` -- 对于以 `>` 开头的行,将行尾更改为给定的字符串。或者,就像没有捕获括号的你一样:`sed 's/^>.*/& Brassica rapa'`——其中 `&` 被替换为匹配的文本。 (6认同)