Analizando los encabezados del file de secuencia

Tengo un file de secuencia múltiple como

>abc|d017961 sequence1...... >cdf|rhtdm9 sequence2...... >ijm|smthr12 sequence3...... >abc|d011wejr sequence4...... >stg|eethwe77 sequence5...... 

Quiero editar el file y quiero el file de resultados como

 >abc_ABC__d017961 sequence1...... >cdf_CDF__rhtdm9 sequence2...... >ijm_IJM__smthr12 sequence3...... >abc_ABC__d011wejr sequence4...... >stg_STG__eethwe77 sequence5...... 

Con GNU sed :

 sed 's/>\([^|]*\)|/>\1_\U\1__/' 

Lo mismo con perl :

 perl -pe's/>(.*?)\|/>$1_\U$1__/'