sed -n 'y/_E/\t\n/;s/\n/E/;s/[^m]*//;s/\(A.\).*E/E/;P'
Isso funciona para mim, dado o seu exemplo ...
miR-16 microRNA ENSG00000206737
miR-378 microRNA ENSG00000222328
Se você quiser que o primeiro \t
ab convertido de volta para um _
, então você pode adicionar s/\t/_/
antes do P
- mas eu acho que parece mais legal assim.
Outra maneira poderia parecer ...
sed 's/RNA[^E]*_/RNA\t/;s/[^m]*//;s/_E.*//'
... ou ...
sed 's/[^mE]*\([mE][^mE_]*\)//;s//\t/3;s/_E.*//'
... que imprimem o que você mostra na saída desejada, como ...
miR-16_microRNA ENSG00000206737
miR-378_microRNA ENSG00000222328
Em qualquer caso, você pode ter que usar um caractere literal no lugar do escape \t
, dependendo da implementação do sed
.