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
-
-r
use ERE -
s/old/new
replaceold
comnew
-
(some chars)
lembre-se desome chars
para 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