У меня есть файл .fasta (текстовый), содержащий данные последовательности ДНК в следующем формате:
>uce-8374_Genus_species
ACGTACGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTACGATCGCGGTATATCGGCGATTCGATCG
>uce-239_Genus_species
ATCGTAGCATGCGCTAGCTAGCTAGCTCGCGGTACGCATGTCTGACTGCGTCTGGTCGTACGATTACTACGACTGCG
>uce-83_Genus_species
ATCGATCTAGCGTAGCATGCGATCGATATCTGCGATCGACTCGATGCATGCATGCATCGATGCTAGCTAGCTAGCTA
>uce-902_Genus_species
AGCTGACTAGCTGGCGATACTGGCGATATCGGATTACGCGGCATATCGAGCGAGTCGATCGATGCATCTGATGCAGC
Я пытаюсь добавить все до первый подчеркивание, которому предшествует |
чтобы только конец строк имел >
. Так, например, первая последовательность будет выглядеть так:
uce-8374_Genus_species|uce-8374
, за которым следует последовательность ДНК под ним. Есть ли способ сделать это в sed? я пытался хранить ^[^_]+(?=_)
в переменную, но это не сработало и просто продолжало добавлять ^[^_]+(?=_)
до конца строки вместо самого узора. Любая помощь, а также объяснения (поскольку я новичок в регулярных выражениях) были бы полезны. Если есть лучший способ сделать это, я открыт для других вариантов!
До сих пор я пытался (я покажу только первую последовательность ДНК, но я хочу изменить их все):
sed -E 's/species/species|^[^_]+(?=_)/' sample_file.fasta
Результат: uce-8374_Genus_species|^[^_]+(?=_)
и я также пробовал:
х="^[^_]+(?=_)"
sed -E "s/species/species|$x/" "sample_file.fasta"
Результат: uce-8374_Genus_species|^[^_]+(?=_)