текстовый файл с данными о последовательности ДНК в файле a. следующим образом:
>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 | ^ [^ _] + (? = _)
и я также пробовал:
x="^[^_]+(?=_)"
sed -E "s/species/species|$x/" "sample_file.fasta"
Результат: uce-8374_Genus_species | ^ [^ _] + (? = _)
В отличие от Perl, sed не поддерживает синтаксис просмотра вперед PCRE (? = _)
, но вы можете подделать его следующим образом:
>
, привязанный к началу строки ^>
_
([^ _] *)
. *
затем замените на
&
|
, а затем первая захваченная группа \ 1
Итак
$ sed -E 's/^>([^_]*).*/&|\1/' sample_file.fasta
>uce-8374_Genus_species|uce-8374
ACGTACGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTACGATCGCGGTATATCGGCGATTCGATCG
>uce-239_Genus_species|uce-239
ATCGTAGCATGCGCTAGCTAGCTAGCTCGCGGTACGCATGTCTGACTGCGTCTGGTCGTACGATTACTACGACTGCG
>uce-83_Genus_species|uce-83
ATCGATCTAGCGTAGCATGCGATCGATATCTGCGATCGACTCGATGCATGCATGCATCGATGCTAGCTAGCTAGCTA
>uce-902_Genus_species|uce-902
AGCTGACTAGCTGGCGATACTGGCGATATCGGATTACGCGGCATATCGAGCGAGTCGATCGATGCATCTGATGCAGC