问题如下描述:
1.在Linux上使用script命令可以记录当前用户的操作命令和命令回显,并将其记录到日志文件中如下:
$script
通过cat可以查看操作记录:通过vim 编辑则会看到很多转义字符,如下:
问题来了,我现在要有一个程序去读取这个日志文件,然后逐行解析其内容,但是读到的数据里面包含了^H^[[K等数据,这个要怎么剔除?比如:
#pe^H^[[Kwd
实际上是#pwd.
有没有工具或函数或程序什么能处理这种控制字符的?
1.在Linux上使用script命令可以记录当前用户的操作命令和命令回显,并将其记录到日志文件中如下:
$script
通过cat可以查看操作记录:通过vim 编辑则会看到很多转义字符,如下:
问题来了,我现在要有一个程序去读取这个日志文件,然后逐行解析其内容,但是读到的数据里面包含了^H^[[K等数据,这个要怎么剔除?比如:
#pe^H^[[Kwd
实际上是#pwd.
有没有工具或函数或程序什么能处理这种控制字符的?
解决方案 »
- Unix父进程fork之后子进程是否继承父进程的定时任务和占有端口?
- 【紧急】|这几天上班,我用的Ubuntu 64位的纯服务器Linux系统,ping不通外网怎么办?
- 如何处理script日志中的转义字符
- messages中的报错处理,请各位大侠帮忙看看
- Linux入门,安装后开机,账号密码都正确,登陆不上,恳请大神指点
- 求大神帮忙
- centOS7安装flash插件
- 安装Ubuntu时检测不到已安装的windows系统
- 国内有没有kafka技术支持和运维厂商
- linux开发板如何通过FTP远程升级程序
- IBM Powerlinux7 HMC口ping不通
- window linux 系统集成咨询
你看到的^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吞掉的字符