我正在尝试使用script命令来记录交互式shell session ,以便可以使用它来准备文档。

根据手册页:



我是一个天真的用户(通常不会在手册页中大喊大叫,这很令人兴奋!),我想处理输出,以便删除退格键,换行符和删除的字符等。

例如,我运行一个脚本 session :

stew:~> script -f scriptsession.log
Script started, file is scriptsession.log
stew:~> date
Mon Aug 22 15:00:37 EDT 2011
stew:~> #extra chars: that
stew:~> exit
exit
Script done, file is scriptsession.log

然后我用cat来读取 session 日志:
stew:~> cat scriptsession.log
Script started on Mon 22 Aug 2011 03:00:35 PM EDT
stew:~> date
Mon Aug 22 15:00:37 EDT 2011
stew:~> #extra chars: that
stew:~> exit
exit

Script done on Mon 22 Aug 2011 03:01:01 PM EDT

但是当我减少使用时,会看到使用cat看不见的不需要的字符的证据:
stew:~> less scriptsession.log
Script started on Mon 22 Aug 2011 03:00:35 PM EDT
stew:~> date
Mon Aug 22 15:00:37 EDT 2011
stew:~> #extra chars: thiESC[ESC[ESC[ESC[Kthat
stew:~> exit
exit

Script done on Mon 22 Aug 2011 03:01:01 PM EDT
scriptsession.log lines 1-8/8 (END)

当我使用cat时,我知道它不会删除不可见的字符,只是不能像可见的字符那样清晰地表示它们-因此,如果我将cat的输出通过管道传输到文件中,它仍然会包含不需要的字符。

我想要的输出格式是cat 显示的副本。谢谢!

(如果这是重复的,则表示歉意,搜索“unix脚本输出格式”会针对当前问题返回很多干扰结果!)

最佳答案

col命令将执行您要查找的部分(但不是全部)过滤。 (例如,似乎无法识别粗体和下划线的控制顺序。)

我过去使用的一种方法是(a)更改我的shell提示符,使其不进行任何突出显示(通常这样做),和/或(b)将$TERM设置为"dumb",以便各种命令都不会尝试执行使用某些控制顺序。

关于bash - 从Unix的格式输出 "script"命令: remove backspaces,换行和删除的字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7152339/

10-12 18:16