GD- Ganesh Deshmukh Asked: 2018-08-11 20:40:12 +0800 CST2018-08-11 20:40:12 +0800 CST 2018-08-11 20:40:12 +0800 CST 如何将脚本命令输出转换为纯文本 772 我正在使用script-command将终端的输出保存到文件中。 但是,它提供了一些额外的字符,如square-like字符和其他文本加密字符。 man script命令告诉,通过使用-q标志/选项,它给出了相当多的输出,而不会将开始和完成消息写入标准输出,但它不会删除额外的字符。 我怎样才能得到以下信息: 1)使输出文件与终端输出完全相同,删除多余的字符。 2)在生成的文件中,由于纯文本 - 没有颜色(与终端不同),我无法直接弄清楚input commands,因为我输入的输出和命令出现相同的字体, 我可以将命令设置为比其他输出粗体或易于识别吗? scripts command-line gnome-terminal bash console 1 个回答 Voted Best Answer Ravexina 2018-08-11T22:24:03+08:002018-08-11T22:24:03+08:00 如果您签出: man script | grep -i bugs -A 2 你可以看到: 脚本将所有内容都放在日志文件中,包括换行符和退格符。这不是天真的用户所期望的。 我想出的是结合tr并sed得到我们想要的东西。 这些字符中的大多数都表示颜色,要删除其中的大部分,我们可以从这里sed使用这个命令: sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" 然而这还不够……因为正如我们在脚本中看到的,man还有其他不可打印的字符我们应该去掉。要删除那些我们可以简单地使用: tr -dc '[[:print:]]\n' 现在我们快到了,我测试中的另一个问题是提示重复两次,所以要删除script以dumpandTERM的 value开头的那个TERM=dump。 最后结果: 要捕获命令: 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 对于您问题的第二部分,输出文件只是一个文本文件,因此我们无法更改其特定行的字体或大小,但是您的输出包含您的提示,因此您将知道哪一行是命令,哪一行是输出。
如果您签出:
你可以看到:
我想出的是结合
tr
并sed
得到我们想要的东西。这些字符中的大多数都表示颜色,要删除其中的大部分,我们可以从这里
sed
使用这个命令:然而这还不够……因为正如我们在脚本中看到的,
man
还有其他不可打印的字符我们应该去掉。要删除那些我们可以简单地使用:现在我们快到了,我测试中的另一个问题是提示重复两次,所以要删除
script
以dump
andTERM
的 value开头的那个TERM=dump
。最后结果:
要捕获命令:
要删除不必要的字符:
对于您问题的第二部分,输出文件只是一个文本文件,因此我们无法更改其特定行的字体或大小,但是您的输出包含您的提示,因此您将知道哪一行是命令,哪一行是输出。