問題如下描述:
1.在Linux上使用script命令可以記錄當前用戶的操作命令和命令回顯,并將其記錄到日志檔案中如下:
$script
通過cat可以查看操作記錄:

通過vim 編輯則會看到很多轉義字符,如下:

問題來了,我現在要有一個程式去讀取這個日志檔案,然后逐行決議其內容,但是讀到的資料里面包含了^H^[[K等資料,這個要怎么剔除?比如:
#pe^H^[[Kwd
實際上是#pwd.
有沒有工具或函式或程式什么能處理這種控制字符的?
uj5u.com熱心網友回復:
先自頂一個!!!uj5u.com熱心網友回復:
用col試下uj5u.com熱心網友回復:
試下iscntrl()uj5u.com熱心網友回復:
試下樓上說的
uj5u.com熱心網友回復:
感謝回復,不過這個不能滿足我的需求,我的日志里面的控制字符,不光是判斷是不是控制字符。要根據控制字符,控制游標。
uj5u.com熱心網友回復:
直接讀取后,通過判斷是否是可見字符,直接去掉不就可以了嗎。uj5u.com熱心網友回復:
就是讀檔案, 沒有什么區別啊你看到的^M等就是VIM中顯示控制字符的方式而已, 詳細可以在vim中通過 :help digraph-table 命令查看
可以翻很多頁的,這里只顯示第一頁
*digraph-table*
char digraph hex dec official name ~
^@ NU 0x00 0 NULL (NUL)
^A SH 0x01 1 START OF HEADING (SOH)
^B SX 0x02 2 START OF TEXT (STX)
^C EX 0x03 3 END OF TEXT (ETX)
^D ET 0x04 4 END OF TRANSMISSION (EOT)
^E EQ 0x05 5 ENQUIRY (ENQ)
^F AK 0x06 6 ACKNOWLEDGE (ACK)
^G BL 0x07 7 BELL (BEL)
^H BS 0x08 8 BACKSPACE (BS)
^I HT 0x09 9 CHARACTER TABULATION (HT)
^@ LF 0x0a 10 LINE FEED (LF)
^K VT 0x0b 11 LINE TABULATION (VT)
^L FF 0x0c 12 FORM FEED (FF)
^M CR 0x0d 13 CARRIAGE RETURN (CR)
^N SO 0x0e 14 SHIFT OUT (SO)
^O SI 0x0f 15 SHIFT IN (SI)
^P DL 0x10 16 DATALINK ESCAPE (DLE)
^Q D1 0x11 17 DEVICE CONTROL ONE (DC1)
你用程式去讀取檔案的時候根本不可能遇到 ^M這樣的字串, 遇到^M,其實就是遇到 CR(換行符)而已,
pe^H^[[Kwd 這個 ^H 代表退格刪掉字符e, ^[ 表示ESC鍵 [K應該是被ESC吞掉的字符
uj5u.com熱心網友回復:
樓主試下【dos2unix files】uj5u.com熱心網友回復:
后來解決了嗎?我也遇到這個問題轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/257278.html
標籤:應用程序開發區
