如何处理script日志中的转义字符

「已注销」 2018-05-14 11:15:43
问题如下描述:
1.在Linux上使用script命令可以记录当前用户的操作命令和命令回显,并将其记录到日志文件中如下:
$script
通过cat可以查看操作记录:

通过vim 编辑则会看到很多转义字符,如下:


问题来了,我现在要有一个程序去读取这个日志文件,然后逐行解析其内容,但是读到的数据里面包含了^H^[[K等数据,这个要怎么剔除?比如:
#pe^H^[[Kwd
实际上是#pwd.
有没有工具或函数或程序什么能处理这种控制字符的?
...全文
1691 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
markzhangmm 2021-02-06
  • 打赏
  • 举报
回复
后来解决了吗?我也遇到这个问题
李庆海 2018-06-29
  • 打赏
  • 举报
回复
楼主试下【dos2unix files】
LubinLew 2018-06-29
  • 打赏
  • 举报
回复
就是读文件, 没有什么区别啊
你看到的^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吞掉的字符
金秋枣香 2018-06-27
  • 打赏
  • 举报
回复
直接读取后,通过判断是否是可见字符,直接去掉不就可以了吗。
「已注销」 2018-06-25
  • 打赏
  • 举报
回复
引用 3 楼 dark9527 的回复:
试下iscntrl()

感谢回复,不过这个不能满足我的需求,我的日志里面的控制字符,不光是判断是不是控制字符。要根据控制字符,控制光标。
借一方乐土np 2018-05-18
  • 打赏
  • 举报
回复
试下楼上说的
dark9527 2018-05-16
  • 打赏
  • 举报
回复
试下iscntrl()
「已注销」 2018-05-14
  • 打赏
  • 举报
回复
先自顶一个!!!
ckc 2018-05-14
  • 打赏
  • 举报
回复
用col试下

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧