colが誤った出力を生成する

colが誤った出力を生成する

script出力をより読みやすい形式に後処理しようとしています。スクリプト出力から制御文字(コンソールコード/色付き)を削除するcolしかし、これが常に動作するわけではないことがわかりました。

例えば、

$ cat -v uncolored 
foo^H^H^Hbfoo^H^H^Hafoo^H^H^Hr^M
$ col -bp < uncolored
baroo

なぜ直接col -bp出力しないのですbarか?余分な2はどこoから来ましたか。

ベストアンサー1

^Hこの場合は、dec/hex 8 または oct 10 とも呼ばれるバックスペースキーです\b。たとえば、次のようになります。

$ printf 'bravo\10\10X'
braXo

カーソルをもう一度2に移動しましたが、1文字だけを書きましたv。つまり、上書きしなかったoのでそのまま残ります。残りの文字を削除するには、通常は空白文字で上書きする必要があります。

$ printf 'bravo\10\10X '
braX

http://wikipedia.org/wiki/Backspace#%5eH

おすすめ記事