如何将脚本命令输出转换为纯文本
我使用script-command
将终端的输出保存到文件。
但是,它提供了一些额外的字符,如square-like
字符和其他文本加密字符。
man script
命令通过使用-q
标志/选项告诉它,它提供了相当大的输出,而没有将开始和完成消息写入标准输出,但它不会删除多余的字符。
我怎样才能得到以下内容:
1)使输出文件与终端输出完全相同,删除多余的字符。
2)在生成的文件中,由于纯文本 – 没有颜色(不像终端),我无法直接input commands
,因为我输入的输出和命令出现相同的字体,
我可以将命令设置为粗体或比rest输出容易识别吗?
如果你结帐:
man script | grep -i bugs -A 2
你可以看到:
脚本将所有内容放在日志文件中,包括换行符和退格键。 这不是天真的用户所期望的。
我想出的是tr
和sed
的结合,以获得我们想要的东西。
大多数这些字符都是指示颜色,要删除大部分字符,我们可以从这里使用此sed
命令:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
然而,它仍然不够……因为正如我们在剧本中看到的那样,我们应该摆脱其他不可打印的角色。 要删除那些,我们可以简单地使用:
tr -dc '[[:print:]]\n'
现在我们差不多了,我的测试中的另一个问题是提示重复两次,所以要用dump
和TERM
的值TERM=dump
删除该启动script
。
最后结果:
-
捕获命令:
TERM=dump script my_output
-
删除不必要的字符:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" my_output | tr -dc '[[:print:]]\n' > new_output
对于你的问题的第二部分,输出文件只是一个文本文件,所以我们不能改变它的特定行的字体或大小,但是你的输出包含你的提示,所以你会知道哪一行是命令,哪一行是是输出。