Это сценарий Awk:
#!/usr/bin/awk -f
/^>/ { header = $0 }
!/^>/ { sequence[header] = sequence[header] $0 }
END {
for (head in sequence) {
printf("%s\n%s\n", head, sequence[head])
}
}
Он анализирует весь файл Fasta в памяти, объединяя все данные последовательности с идентичными заголовками. В конце он выведет данные.
Обратите внимание, что этот подход не подходит для больших файлов Fasta и, безусловно, полностью нарушит работу файлов размером с геном (недостаточно памяти). Для лучшего подхода в этих случаях можно было бы вместо этого рассмотреть возможность хранения проанализированных данных в файлах, которые в конце объединяются. Однако я не смотрел на реализацию этого.
Чтобы запустить сценарий:
$ awk -f ./script.awk file.fa
>1
aagg
>2
cctag
>3
tt
>4
atc