Você pode usar o seguinte comando sed
para isso:
sed -e 's/^>.*\^/>/g'
Explicação:
- a expressão procura uma string que comece com
>
e termine com^
- e substitui isso por
>
- então, apenas as últimas letras dos IDs são mantidas.
com o seu exemplo:
$ echo ">xxx_3-13_00021^gcd
TGCCGTTATTACAATCCGGCAGTCCATACGGCAGCTTTTGCCTTACCCCAGTATCTGCAA
GATGCACTGGCTTCACAGCCGTCCTAA
>yyy_3-13_00019^group_3912
ATGGCCGTTTGCGCAAACAGTTACGCGCTCAGCGAGTCTGAAGCCGAAGATATGGCCGAT
TTAACGGCAGTTTTTGTTTTTCTGAAGAACGATTGTGGTTACCAGAACTTACCTAACGGG
CAAATTCGTCGCGCGCTGGTCTTTTTCGCCCAGCAAAACCAGTGGGATCTCAGTAATTAC
GACACCTTCGACATGAAAGCCCTCGGTGAAGACAGCTACCGCGATCTCAGCGGCATTGGC
ATTCCCGTCGCTAAAAAGTGCAAAGCCCTGGCTCGCGATTCCTTAAGCCTGCTTGCCTAC
GTCAAATAA
>zzzz_3-13_00020^cueO
ATGCAACGTCGTGATTTCTTGAAATATTCCGTCGCGCTGGGTGTGGCTTCAGCCTTGCCG
CTGTGGAGCCGCGCAGTATTTGCGGCGGAACGCCCAACGTTACCAATCCCTGATTTGCTC
ACGACCGATGCCCGTAATCGCATTCAGTTAACTATTGGCGCAGGTCAGTCCACCTTTGGC
GGGAAAACCGCAACTACCTGGGGCTATAACGGCAATCTGCTGGGGCCGGCGGTGAAATTA
CAGCGTGGCAAAGCGGTAACGGTTGATATCTACAACCAACTGACGGAAGAGACGACGTTG
CACTGGCACGGGCTGGAAGTACCGGGTGAAGTGGACGGCGGCCCGCAGGGAATTATTCCG" | sed -e 's/^>.*\^/>/g'
>gcd
TGCCGTTATTACAATCCGGCAGTCCATACGGCAGCTTTTGCCTTACCCCAGTATCTGCAA
GATGCACTGGCTTCACAGCCGTCCTAA
>group_3912
ATGGCCGTTTGCGCAAACAGTTACGCGCTCAGCGAGTCTGAAGCCGAAGATATGGCCGAT
TTAACGGCAGTTTTTGTTTTTCTGAAGAACGATTGTGGTTACCAGAACTTACCTAACGGG
CAAATTCGTCGCGCGCTGGTCTTTTTCGCCCAGCAAAACCAGTGGGATCTCAGTAATTAC
GACACCTTCGACATGAAAGCCCTCGGTGAAGACAGCTACCGCGATCTCAGCGGCATTGGC
ATTCCCGTCGCTAAAAAGTGCAAAGCCCTGGCTCGCGATTCCTTAAGCCTGCTTGCCTAC
GTCAAATAA
>cueO
ATGCAACGTCGTGATTTCTTGAAATATTCCGTCGCGCTGGGTGTGGCTTCAGCCTTGCCG
CTGTGGAGCCGCGCAGTATTTGCGGCGGAACGCCCAACGTTACCAATCCCTGATTTGCTC
ACGACCGATGCCCGTAATCGCATTCAGTTAACTATTGGCGCAGGTCAGTCCACCTTTGGC
GGGAAAACCGCAACTACCTGGGGCTATAACGGCAATCTGCTGGGGCCGGCGGTGAAATTA
CAGCGTGGCAAAGCGGTAACGGTTGATATCTACAACCAACTGACGGAAGAGACGACGTTG
CACTGGCACGGGCTGGAAGTACCGGGTGAAGTGGACGGCGGCCCGCAGGGAATTATTCCG