我有一个具有以下标头结构的 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
我想知道是否有办法组合这两个命令,我编辑第一列,然后重新打印其余部分,但我不知道该怎么做:(
我感谢任何帮助!
我建议用
sed
:
sed 's/-[^|]*//' file
输出到标准输出:
>Saurogobio_punctatus|taxid=1771284|细胞生物,真核生物,后孔动物,后生动物 GCTAGCGTAGCTTAATATAAAGCATAACACTGAAGATGTTAAGATGAGCCCTAA