小兔的筆記本

Just another WordPress.com weblog

去除文字檔內的 ANSI 控制碼

Posted by Tsukino Usagi 於 四月 5, 2006

BBS 文章裡頭通常會有一些 ANSI 控制碼, 用來在彩色終端機畫面下呈現顏色或閃爍反白之類的效果, 若文字檔裡有這些控制碼, 可以寫個正規表達式(regular expressions)把它去掉.

用 vim 打開一個有 ANSI 控制碼的文字檔, 下這個指令:

:%s/\e\[[0-9;]*m/g

再存檔即可.

或者是在 Linux 環境下用 sed 指令, 假設有個 test.eml 想去掉裡面的 ANSI 控制碼:

$ cat test.eml | sed -e ‘s/\x1b\[[0-9;]*m//g’ > test.txt

就會自動產生 test.txt 檔, 裡頭已經沒有任何控制碼.

這個方式並沒有辦法把移位碼移除掉, 如果想移除移位碼的話, 可以試試把正規表達式的部份改成這樣:

\x1b\[[0-9;]*[mABCDHJKsu].

另外, ANSI 的 escape 字元在正規表達式裡要用 \x1b 代表(ASCII碼16進位), 但是在 vim 裡要寫成 \e ,這也是要注意的地方.

參考資料:

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

 
%d 位部落客按了讚: