通过删除“-”之后的字符串来仅编辑 fasta 标题的第一列

问题描述 投票:0回答:1

我有一个具有以下标头结构的 fasta 文件:

>Saurogobio_punctatus-NC_080528.1|taxid=1771284|cellularorganisms,Eukaryota,Opisthokonta,Metazoa
GCTAGCGTAGCTTAATATAAAGCATAACACTGAAGATGTTAAGATGAGCCCTAA

每个部分由管道

'|'
分隔,第一部分是
species_name-accessionID
的组合。

我想删除连字符

'-'
之后的 accesionID,但保留其他所有内容。像这样:

>Saurogobio_punctatus|taxid=1771284|cellularorganisms,Eukaryota,Opisthokonta,Metazoa
GCTAGCGTAGCTTAATATAAAGCATAACACTGAAGATGTTAAGATGAGCCCTAA

我已经尝试过:

sed -E '/^>/s/(\|[^-]*)-.*$/\1/' input.fasta > output.fasta

但这会删除连字符之后的所有内容

'-'
:

>Saurogobio_punctatus
GCTAGCGTAGCTTAATATAAAGCATAACACTGAAGATGTTAAGATGAGCCCTAA

我之前使用过这段代码来编辑标题并在第二列之前包含

taxid=

awk 'BEGIN { FS=OFS="|" } /^>/ { print $1, "taxid=", $2, $3; next } { print }' file.fa > edit_file

我想知道是否有办法组合这两个命令,我编辑第一列,然后重新打印其余部分,但我不知道该怎么做:(

我感谢任何帮助!

awk sed fasta
1个回答
0
投票

我建议用

sed
:

sed 's/-[^|]*//' file

输出到标准输出:

>Saurogobio_punctatus|taxid=1771284|细胞生物,真核生物,后孔动物,后生动物
GCTAGCGTAGCTTAATATAAAGCATAACACTGAAGATGTTAAGATGAGCCCTAA

请参阅:Stack Overflow 正则表达式常见问题解答

© www.soinside.com 2019 - 2024. All rights reserved.