バックスペースが含まれるテキストを、ターミナル以外でもちゃんと表示できるよう加工する

2018/04/17 追記

ebanさんから、col -bでいけるよという教えをいただく。

あ、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
Sponsored Links

このバックスペース+前の文字を削除して、その結果を文字列として扱いたい場合、以下のように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コマンドなどで取得したターミナルログに残っているバックスペースを削除する際なんかに使えると思う。

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*