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


8

如何从文件中删除以下字符序列?^[[64;8H^[[?25h^[[1;64r等或有希望避免增加他们摆在首位?

背景:

我正在为某些任务使用期望脚本的集合。

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

tr -dc '[:print:]\n' < input

编辑:

有问题的行从上面得到的结果

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....

Answers:


6

你近了 你要

tr -dc '[:print:]\n' <input

tr(1)手册页:

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

更新资料

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

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

它来自一个称为CentOS 4.4的服务器故障问题,如何从文本文件中删除转义序列?


谢谢约瑟夫。这样可以使字符可见,但不会去除字符。我将在问题正文中显示结果。
蒂姆·布里格姆

@TimBrigham更新对您有帮助吗?
Joseph R.

1

经过一些实验(我使用了鱼壳,它使所有东西都变色了):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.