2018/04/17 追記
ebanさんから、col -b
でいけるよという教えをいただく。
col -bってのありまして
— eban (@eban) 2018年4月17日
あ、colでいけたんだ…(´・ω・`)。 大体のUNIX系OSならcol入ってるし、こっちのほうが良いね…。
以下のようにバックスペースキャラクタを含んだ文字列があるとする。
blacknon@BS-PUB-DEVELOP:~$ echo -e 'test\b\bES'
teES
一見、バックスペースで前の文字が消えてるように見えるのだが、実際には見えないようにしているだけで、前の文字はまだ残っている。
blacknon@BS-PUB-DEVELOP:~$ echo -e 'test\b\bES' | cat -v
test^H^HES
このバックスペース+前の文字
を削除して、その結果を文字列として扱いたい場合、以下のようにsedで置換してやるといいだろう。
sed ':a;s/[^\x08]\x08//g;ta'
blacknon@BS-PUB-DEVELOP:~$ echo -e 'test\b\bES' | sed ':a;s/[^\x08]\x08//g;ta' | cat -v
teES
scriptコマンドなどで取得したターミナルログに残っているバックスペースを削除する際なんかに使えると思う。