Assumindo muita consistência, você pode usar algo como ...
$ sed -r 's/([^ ]+\|[^ ]+\|[^_]+_)[^_]+ .* OS=([^ ]+ [^ ]+) .*//' file
sp|O34439|YFLP_Bacillus subtilis
MKKSIILLNILLIFMQGDIRQAAAPRLPDGPIEIVVPAEPSGGWDVTAQAIQSVLRQKQIVKDDVHIVYKSGGGGEK
sp|Q44018|YGB7_Cupriavidus necator
MQRRHFIARAGIAAATAALGLAAMPAQAQADKFPQRPIRLVIGYTAGGSTDIPFRVLADNASKILGQPVIVENK
Notas
-
-ruse ERE -
s/old/newreplaceoldcomnew -
(some chars)lembre-se desome charspara referência posterior cometc -
[^ ]+pelo menos um caractere não espacial ([^_]+é pelo menos um caractere não sublinhado) -
\|literal|desde que em ERE|é usado para alternação -
.*qualquer número de caracteres -
referências anteriores a padrões salvos