Text-Processing
col 產生不正確的輸出
我正在嘗試將輸出後處理
script
為更易讀的形式,類似於從腳本輸出中刪除控製字元(包括控制台程式碼/顏色),但我注意到這col
並不總是有效。例如,
$ cat -v uncolored foo^H^H^Hbfoo^H^H^Hafoo^H^H^Hr^M $ col -bp < uncolored baroo
為什麼不
col -bp
輸出bar
呢?多餘的兩個o
s 是從哪裡來的?
^H
在這種情況下是退格鍵,AKA dec/hex 8 或 oct 10 或\b
. 它所做的只是移動游標;舉個例子:$ printf 'bravo\10\10X' braXo
我們已將游標移回 2,但我們只寫了一個字母,即
v
. 我們沒有寫過o
,所以它仍然存在。如果你想去掉其餘的字母,你必須用一些東西覆蓋它們,通常是一個空格字元:$ printf 'bravo\10\10X ' braX
這是一個hacky解決方法:
sed -re ':b; s,[^\x08]\x08,,g; tb'
:b
: 標籤b
s,[^\x08]\x08,,g
: 將非退格字元與退格字元配對並刪除兩者tb
: 如果前面的s
指令做了什麼,就跳回 labelb