从 GNU Screen 的屏幕日志中删除转义字符。%n

sha*_*ond 15 linux terminal gnu-screen

是否可以删除 GNU Screen 输出文件中的 ESC 序列?诸如颜色、制表符和其他转义字符之类的内容会进入日志文件并变得难以破译。

我试过 Dr. Google & Co. 以及阅读手册,但一直找不到合适的东西......

也许我忽略了什么?

whi*_*ark 12

试试这个 Perl 魔法:

perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/\007//g;print' < screenlog.0
Run Code Online (Sandbox Code Playgroud)

  • 当然,我可以写另一行来计算它们。 (4认同)

小智 12

还可以尝试使用 less 的 -r 或 -R 选项。

less -r screenlog.0
Run Code Online (Sandbox Code Playgroud)


小智 10

使用ansifilter。

ansifilter screenlog.txt > screenlog.txt.clean
Run Code Online (Sandbox Code Playgroud)


Joe*_*rks 6

在 screenlog.n 中捕获会话后,您可以将文件 cat 到终端,然后使用 screen 的 hardcopy 命令将 cat 的输出转储到 file 。结果将为您提供没有任何转义序列的干净输出。

唯一的“问题”似乎是确保硬拷贝捕获回滚缓冲区中的所有内容,并且回滚缓冲区仅包含您想要捕获的内容。

1. $ screen
2. $ cd /path/to/screenlog.n directory/
3. $ wc -l screenlog.n 
4. $ screen -X scrollback 245 # 245 is the number of lines found from your wc command + 5 
5. $ cat screenlog.n
6. $ screen -X hardcopy -h screenlog.n.cleaned 
Run Code Online (Sandbox Code Playgroud)

请注意, -h 可确保您捕获整个回滚历史记录,而不仅仅是即时视图中的内容

screenlog.n.cleaned 文件现在将包含 cat 输出的硬拷贝,并且不会包含任何转义序列