É para isso que col -b :
$ printf 'a\bb\n' | col -b | od -tc
0000000 b \n
0000002
$ printf 'aaa\b\b\bbb\n' | col -b | od -tc
0000000 b b a \n
0000004
O sed equivalente seria algo como:
bs=$(printf '\b')
sed "s/^[^$bs]*/&\
\
/;:1
s/\n.\{0,1\}\(.*\n\)\([^$bs]\)/\
/;s/\(.\{0,1\}\)\n\(.*\n\)$bs/\
/;t1
s/\n//g"
Relacionado aos tempos das tele-máquinas de escrever reais (tty), a sequência x\bx às vezes representa% arx ( x digitado em si), x\b_ ou _\bx para um sublinhou x ( x̲ ) e x\b- ou -\bx para passagem direta ( x̶ ).
Outro comando útil para lidar com isso é o comando colcrt .
$ printf '_\bfo\b_o\b_ bar b\b-a\b-z\b-\n' | colcrt
foo bar baz
---
Outra opção é converter \b_ e \b- nos caracteres combinados Unicode U + 0332 e U + 0336:
Aqui, assumindo uma localidade Unicode e zsh , ksh93 ou bash :
$ printf 'f\b_o\b_o\b_ bar b\b-a\b-z\b-\n' | sed $'s/\b_/\u0332/g;s/\b-/\u0336/g'
f̲o̲o̲ bar b̶a̶z̶
(canalize para colcrt ou col -b para também processar x\bx negrito).