Преобразуйте 'u' в 't', не меняя заголовки в FASTA - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь выяснить, как превратить мою смешанную мультифасту ДНК / РНК

>header1
atcggtc
atgcgca
>useful header2
aucggca
uucacuu
ucucuca
>header3
agucuau
cuagggc
...

в формат только для ДНК, не разрушая заголовки. Мои знания заканчиваются на

sed 's/u/t/g'

Но это совершенно очевидно влияет на заголовки. Есть ли способ избежать изменения заголовков с помощью sed или мне следует использовать другую команду? Что я должен искать?

1 Ответ

6 голосов
/ 04 февраля 2020

С sed легко сказать "делать это только на выбранных строках". Общий синтаксис: адрес команда , где адрес может быть регулярным выражением для сопоставления только тех строк, чей первый символ не >.

sed '/^[^>]/s/u/t/g' file.fasta >newfile.fasta

Первый ^ означает начало строки; класс символов [^>] соответствует одному символу, который не является (новой строкой или) >.

Awk, вероятно, легче изучить, легче прочитать и легче запомнить, если двигаться вперед. Тот же скрипт в Awk может выглядеть так:

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

Этот последний 1 не является опечаткой; это идиома Awk для «печати всех строк».

...