Set debugfs pager

Вы хотите удалить все символы новой строки из строк, которые не начинаются с заголовка fasta персонаж > .

awk '/^[>;]/ { if (seq) { print seq }; seq=""; print } /^[^>;]/ { seq = seq $0 } END { print seq }' data.fa

Сценарий Awk - это

/^[>;]/    { if (seq) { print seq }; seq=""; print }
/^[^>;]/ { seq = seq $0 }
END     { print seq }

... который будет делать три разные вещи в зависимости от того, что он найдет в файле.

  • Строка заголовка fasta (строка, начинающаяся с > ) или строка комментария fasta (строка, начинающаяся с ; ): напечатайте любую последовательность, которую мы запомнили в seq , если есть (относится к предыдущему заголовку). Очистите запомненную последовательность. Распечатать текущую строку (заголовок или комментарий).
  • Строка fasta без заголовка (и без комментария): объедините запомненную последовательность с последовательностью в строке. Это эффективно удалит новые строки.
  • Конец файла: распечатать последовательность. Это последовательность, связанная с последним заголовком в файле.

Если вы хотите сделать красивую печать последовательности, например, ограничьте ее до 60 символов в строке:

#!/usr/bin/awk -f

function pretty(s) {
  p = "";
  n = 1;

  while (n < length(s)) {
    p = (p ? p "\n" : "") substr(s, n, 60);
    n += 60;
  }

  return p;
}

/^[>;]/  { if (seq) { print pretty(seq) }; seq=""; print }
/^[^>;]/ { seq = seq $0 } 
END      { print pretty(seq) }

Поместите это в prettyfasta.awk и сделайте его исполняемым ( chmod + x prettyfasta.awk ), затем запустите его:

$ ./prettyfasta.awk data.fa
2
13.04.2017, 15:36
1 ответ

Теги

Похожие вопросы