У меня есть файл .fasta, например:
>LTR22_Mio ERV2 Microtus ochrogaster
tgtcacgccacctcctgcggagtctgcgtgatctctcacgtaggctgtggcacaagcttcaaggaagagt
gcccgcagagaaggtgtgtgtgctgtgcttcctgcatcggagcccttgcacttttggcattacctgctta
tgttctaaggaatacagtctggtttcttctggaagggaagatagtatgtttaagtttccagagtctactg
>LTR23 ERV2 Mus Musculus
tgtcacgccacctcctgcggagtctgcgtgatctctcacgtaggctgtggcaca
>LTR_IAP ERV2 Mus Musculus
tgtcacgccacctcctgcggagtctgcgtgatctctcacgtaggctgtggcacaagcttcaaggaagagt
gcccgcagagaaggtgtgtgtgctgtgcttcctgcatcggagcccttgcacttttggcattacctgctta
tgttctaaggaatacagtctggtttcttctggaagggaagatagtatgtttaagtttccagagtctactg
atgagacattgccatatacaggagtatatgatgctaatggaggaagatgggttaacattcaaggcaaaaa
Я пытаюсь извлечь все заголовки (строки, начинающиеся с >...
) и следующий текстовый блок до следующего >
, которые частично совпадают по определенному шаблону, в моем примере: "Mus musculus"
. Идеальным результатом было бы:
>LTR23 ERV2 Mus Musculus
tgtcacgccacctcctgcggagtctgcgtgatctctcacgtaggctgtggcaca
>LTR_IAP ERV2 Mus Musculus
tgtcacgccacctcctgcggagtctgcgtgatctctcacgtaggctgtggcacaagcttcaaggaagagt
gcccgcagagaaggtgtgtgtgctgtgcttcctgcatcggagcccttgcacttttggcattacctgctta
tgttctaaggaatacagtctggtttcttctggaagggaagatagtatgtttaagtttccagagtctactg
atgagacattgccatatacaggagtatatgatgctaatggaggaagatgggttaacattcaaggcaaaaa
Я пробовал Google для этой относительно распространенной проблемы и нашел только сторонние пакеты для этого, но надеялся на собственное решение на основе bash
.
Я нашел этот grep
однострочный, но он выводит не полный блок текста после строки «заголовка» (источник: https://www.biostars.org/p/319099/):
grep -w -A 2 -f pattern.txt myfile.fasta --no-group-separator
pattern .txt:
Mus Musculus
Большое спасибо за вашу поддержку!