从预期日志中删除不可打印的字符?

Tim*_*ham 9 bash expect tr

如何从我的文件中删除以下字符序列?^[[64;8H, ^[[?25h,^[[1;64r等或避免首先添加它们?

背景:

我正在为某些任务使用一组期望脚本。

我收集的输出文件通常包含上述类型的字符(如 emacs / vi / cat -v 中所示)。我已经尝试了一些像下面这样的 tr 命令,但它只使 [64;8H 等可见。

tr -dc '[:print:]\n' < input
Run Code Online (Sandbox Code Playgroud)

编辑:

上面的结果在一条有问题的线上

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
Run Code Online (Sandbox Code Playgroud)

Jos*_* R. 7

你很接近。你要

tr -dc '[:print:]\n' <input
Run Code Online (Sandbox Code Playgroud)

tr(1)手册页:

-c, -C, --complement
使用 SET1 的补码

更新

如果您还想删除转义序列,可以使用以下sed代码段:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
Run Code Online (Sandbox Code Playgroud)

它取自名为In CentOS 4.4的服务器故障问题,如何从文本文件中去除转义序列?