Scripting 是否有工具清理脚本(1)工具的输出?

Scripting 是否有工具清理脚本(1)工具的输出?,scripting,text-processing,terminfo,Scripting,Text Processing,Terminfo,script1是用于保存交互式终端会话记录的工具;默认情况下,它会写入文件成绩单。我的问题是我使用了ksh93,它有读线功能,所以转录本被各种终端转义序列弄乱了,重建实际执行的命令可能非常困难。更不用说迷路的^M等了 我正在寻找一个工具,可以读取脚本编写的转录本文件,删除所有垃圾,重建shell认为它正在执行的内容,因此我有一些显示$PS1和实际执行的命令的东西。如果做不到这一点,我正在寻找关于如何编写这样一个工具的建议,最好是使用terminfo数据库中的知识,如果做不到这一点,只使用ANSI

script1是用于保存交互式终端会话记录的工具;默认情况下,它会写入文件成绩单。我的问题是我使用了ksh93,它有读线功能,所以转录本被各种终端转义序列弄乱了,重建实际执行的命令可能非常困难。更不用说迷路的^M等了

我正在寻找一个工具,可以读取脚本编写的转录本文件,删除所有垃圾,重建shell认为它正在执行的内容,因此我有一些显示$PS1和实际执行的命令的东西。如果做不到这一点,我正在寻找关于如何编写这样一个工具的建议,最好是使用terminfo数据库中的知识,如果做不到这一点,只使用ANSI转义序列


在shell历史记录中查找的作弊,只要它真的有效,也是可以接受的。

默认情况下,cat/more不适用于浏览成绩单吗?你打算用实际执行的命令创建一个脚本吗?根据我的经验,这些命令可能是危险的

无论如何,3年没有答案,所以我会尝试一个不完整的解决方案。如果您只对实际键入的命令感兴趣,请删除不可打印的字符,然后将PS1'替换为可读且唯一的内容,并将grep替换为该唯一字符串。像这样:

$ sed -i 's/[^[:print:]]//g' transcript

$ sed 's/]0;cartman@southpark: ~cartman@southpark:~/CARTMAN/g' transcript | grep CARTMAN
说明:在第一次sed之后,PS1'可以取自转录本文件的前几行之一,因为-PS1'不同于PS1-并且可以在此处使用唯一的可读字符串CARTMAN进行修改。请注意,提示末尾的美元符号是故意省略的


在我尝试的几个例子中,这并没有解决所有问题,但解决了大多数问题。

这基本上与最近在中提出的问题相同-删除所有非打印字符不会解决问题

嵌入逃逸序列 下线退格/加粗 使用回车进行超行程