示例:我开始录音script
,并尝试输入echo test
但省略了 o,所以我退格来纠正它。
When I cat typescript
一切看起来都很正常,因为代码被解释了,但如果我使用less
or vim
I see ech test^H^[[K^H^[[K^H^[[K^H^[[K^H^[[Ko test^M
我完全理解这是什么以及为什么会发生,但是有什么方法可以“烧入”代码并只在文件中查看结果吗?我的笨办法是cat
文件,然后将文本复制/粘贴到终端之外,但肯定 cat、sed、awk 或其他东西的某种组合可以更轻松地让我到达那里?
要显示包含 ANSI 序列的文件,
less -r typescript
Or,
less -R typescript
要从文件中删除 ANSI 和退格序列,请创建一个干净的newfile
, try:
sed -r ':again; s/[^\x08]\x08\x1b\[K//; t again; s/\x1b_[^\x1b]*\x1b[\]//g; s/\x1B\[[^m]*m//g' typescript >newfile
怎么运行的
-
-r
这将打开扩展正则表达式。 (在 BSD 系统上,-r
应替换为-E
。现代版本的 GNU sed 将接受-r
or -E
.)
-
`:再次; s/[^\x08]\x08\x1b[K//;再次
这会删除所有退格序列。这些都是在循环中一次完成一个。
-
s/\x1b_[^\x1b]*\x1b[\]//g
As an xterm
扩展名(参见文档), Esc _ something Esc \
不会做任何事。此命令删除这些序列。
-
s/\x1B\[[^m]*m//g
这会删除剩余的设置颜色等的 ANSI 序列。
这涵盖了我通常遇到的所有控制序列。有各种各样的扩展控制序列,如果您的输出中有一些我没有见过的,则代码可能需要扩展。
POSIX 或 BSDsed
在 BSD 或 POSIX 系统上,各个命令必须链接在一起-e
选项而不是分号。因此,尝试:
sed -e ':again' -e 's/[^\x08]\x08\x1b\[K//' -e 't again' -e 's/\x1b_[^\x1b]*\x1b[\]//g' -e 's/\x1B\[[^m]*m//g'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)