将 'u' 转换为 't' 而不更改 FASTA 中的标题

Irr*_*nal 1 awk sed fasta

我想弄清楚如何将我的混合 DNA/RNA multifasta

>header1
atcggtc
atgcgca
>useful header2
aucggca
uucacuu
ucucuca
>header3
agucuau
cuagggc
...
Run Code Online (Sandbox Code Playgroud)

在不破坏标题的情况下转换为纯 DNA 格式。我的知识结束于

sed 's/u/t/g'
Run Code Online (Sandbox Code Playgroud)

但这显然会影响标题。有没有办法避免使用 sed 更改标题,还是应该使用其他命令?我应该寻找什么?

tri*_*eee 6

使用sed,很容易说“仅在选定的行上执行此操作”。一般语法是address 命令,其中address可以是正则表达式以仅匹配第一个字符不是 的行>

sed '/^[^>]/s/u/t/g' file.fasta >newfile.fasta
Run Code Online (Sandbox Code Playgroud)

第一个^表示行的开头;字符类[^>]匹配不是 (newline or) 的单个字符>

awk 可能更容易学习、更容易阅读和更容易记住。Awk 中的相同脚本可能看起来像

awk '/^[^>]/{ gsub(/u/,"t") }1' file.fasta >newfile.fasta
Run Code Online (Sandbox Code Playgroud)

最后一个1不是打字错误;这是“打印所有行”的 awk 习语。

  • @EnricoMariadeAngelis 我回滚了你的编辑,因为有些侵入性。我可以在评论中链接到 https://unix.stackexchange.com/q/63891/19240 。 (5认同)