问题如下描述:
1.在Linux上使用script命令可以记录当前用户的操作命令和命令回显,并将其记录到日志文件中如下:
 $script 
 通过cat可以查看操作记录:通过vim 编辑则会看到很多转义字符,如下:
问题来了,我现在要有一个程序去读取这个日志文件,然后逐行解析其内容,但是读到的数据里面包含了^H^[[K等数据,这个要怎么剔除?比如:
#pe^H^[[Kwd
实际上是#pwd.
有没有工具或函数或程序什么能处理这种控制字符的?

解决方案 »

  1.   

    用col试下
      

  2.   

    试下iscntrl()
      

  3.   

    就是读文件, 没有什么区别啊
    你看到的^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吞掉的字符
      

  4.   

    楼主试下【dos2unix files】