Parece que você deseja remover tudo antes do último caractere |
. No entanto, seu segundo exemplo tem um |
após o ID e antes do hypothetical protein
. Presumivelmente, nesse caso, você deseja remover tudo antes do último |
que não é seguido por um espaço.
Aqui está uma maneira:
$ sed 's/| / /; s/^[^ ]*|/>/' file.pep
>CAX10446 conserved hypothetical protein
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRRSSATRATESRSSSRTARGASSGYKEYSPSAAR
>AAX50250.1 hypothetical protein CTA_0001
MSIRGVGGNGNSRIPSHNGDGSNRRSQNTKNKVEDRVRSLYSSRSNENRESPYAVVDVSSMIESTPTSGE
TTRASRGVFSRFQRGLGRVADKVRRAVQRAWSSVSIRR
O s/| / /;
remove qualquer |
seguido por um espaço. Isso removerá o |
de AAX50250.1|
. O s/^[^ ]*|/>/
procura >
no início da linha ( ^>
) e remove a cadeia mais longa de caracteres que não são de espaço ( [^ ]
) até o último |
na linha.