如何将脚本命令输出转换为纯文本

我使用script-command将终端的输出保存到文件。

但是,它提供了一些额外的字符,如square-like字符和其他文本加密字符。

man script命令通过使用-q标志/选项告诉它,它提供了相当大的输出,而没有将开始和完成消息写入标准输出,但它不会删除多余的字符。

这里

我怎样才能得到以下内容:

1)使输出文件与终端输出完全相同,删除多余的字符。

2)在生成的文件中,由于纯文本 – 没有颜色(不像终端),我无法直接input commands ,因为我输入的输出和命令出现相同的字体,

我可以将命令设置为粗体或比rest输出容易识别吗?

如果你结帐:

 man script | grep -i bugs -A 2 

你可以看到:

脚本将所有内容放在日志文件中,包括换行符和退格键。 这不是天真的用户所期望的。


我想出的是trsed的结合,以获得我们想要的东西。

大多数这些字符都是指示颜色,要删除大部分字符,我们可以从这里使用此sed命令:

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

然而,它仍然不够……因为正如我们在剧本中看到的那样,我们应该摆脱其他不可打印的角色。 要删除那些,我们可以简单地使用:

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

现在我们差不多了,我的测试中的另一个问题是提示重复两次,所以要用dumpTERM的值TERM=dump删除该启动script


最后结果:

  1. 捕获命令:

     TERM=dump script my_output 
  2. 删除不必要的字符:

     sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" my_output | tr -dc '[[:print:]]\n' > new_output 

对于你的问题的第二部分,输出文件只是一个文本文件,所以我们不能改变它的特定行的字体或大小,但是你的输出包含你的提示,所以你会知道哪一行是命令,哪一行是是输出。