Minha resposta anterior corrigiu um erro. Aqui está a maneira que eu realmente resolveria:
O cenário 4 é o mais complicado, então aqui está a solução:
echo '123|456|789' | sed 's/\([0-9]*\)|\([0-9]*\)|\([0-9]*\)/ /'
O \ 1, \ 2 e \ 3 no final selecionam a parte combinada entre os 'colchetes decorados' (o \ (e \)). Cada conjunto desses é referenciado pelo próximo número, então \ 1 para o primeiro, etc.
Para os cenários 1, 2 e 3, você pode simplificar isso, mas é mais fácil apenas recortar e colar, e depois apenas \ 1, \ 2 ou \ 3 conforme necessário entre o último conjunto de //. Não vai doer deixar o resto dos parênteses decorados lá.
Esta solução pode ser expandida para qualquer número de campos, embora eu prefira usar o corte, se possível.