mva*_*nle 7 ascii conversion ansi
我有一个包含(ANSI?)转义序列的文本文件:
当我cat
输入文件时,我得到格式化输出:
如何将文本文件的输出保存/通过管道传输到新文件,以便删除控制代码但保留格式?
换句话说,我想将文件的内容转换/导出到新文件,同时保留预期的显示格式(例如,就像使用时得到的那样less -r <file>
)。
我需要一种自动化的方法来执行此操作,以便可以记录输出并将其作为电子邮件通知发送。
这是上面屏幕截图中文件的 Base64 输出(用于base64 -d
解码它):
G1tIG1syShtbMTsxSA0KG1s0OzRIICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSURFTlRJ
QUwgSU5GT1JNQVRJT04bW0sbWzU7NEgbW0sbWzY7NEgbW0sbWzc7NEhUaGlzIHdvcmsgY29udGFp
bnMgdmFsdWFibGUsIGNvbmZpZGVudGlhbCwgYW5kIHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uLhtb
SxtbODs0SERpc2Nsb3N1cmUsIHVzZSwgb3IgcmVwcm9kdWN0aW9uIGlzIGdvdmVybmVkIGJ5IHlv
dXIgTGljZW5zZSBBZ3JlZW1lbnQuG1tLG1sxMDs0SBtbSxtbMTE7NEhUaGlzIHVucHVibGlzaGVk
IHdvcmsgaXMgcHJvdGVjdGVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIGFuZBtb
SxtbMTI7NEhvdGhlciBDb3VudHJpZXMuICBUaGUgd29yayB3YXMgY3JlYXRlZCBpbiAxOTg4IGFu
ZCByZXZpc2VkIGluIDE5OTQuICAbW0sbWzEzOzRISWYgcHVibGljYXRpb24gb2NjdXJzLCB0aGUg
Zm9sbG93aW5nIG5vdGljZSBzaGFsbCBhcHBseTobW0sbWzE0OzRIG1tLG1sxNTs0SBtbSxtbMTY7
NEggICBDb3B5cmlnaHQgMTk4OCwxOTk0LiBBbGwgcmlnaHRzIHJlc2VydmVkLhtbSxtbMTc7NEgb
W0sbWzE4OzRIG1tLG1sxOTs0SFRoaXMgQ29weXJpZ2h0IG5vdGljZSBhbmQgb3RoZXIgY29weXJp
Z2h0IG5vdGljZXMgaW5jbHVkZWQgaW4gdGhlIG1hY2hpbmUbW0sbWzIwOzRIcmVhZGFibGUgY29w
aWVzIG11c3QgYmUgcmVwcm9kdWNlZCBvbiBhbGwgYXV0aG9yaXplZCBjb3BpZXMuG1tLG1syMTs0
SBtbSxtbMjI7NEhUaGlzIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsuG1tLDQo=
Run Code Online (Sandbox Code Playgroud)
最好的办法是让终端模拟器解释这些序列,并告诉它转储结果中的文本部分。
screen
是您可以在脚本中轻松与之交互的终端模拟器之一。你可以这样做:
INPUT=file.txt OUTPUT=output.txt screen -Dmc /dev/null sh -c '
screen -X scrollback 100000
cat < "$INPUT"
screen -X hardcopy -h "$OUTPUT"'
Run Code Online (Sandbox Code Playgroud)
这将使用空onfig 文件 ( ) 启动一个新的 ( -m
)蚀刻屏幕会话。在那里,我们在屏幕窗口中运行该内联脚本,增加回滚大小(尽管这里的输出适合一个屏幕),将输入文件转储到屏幕窗口中,然后调用转储屏幕内容,包括回滚到输出文件中。D
c
/dev/null
sh
hardcopy -h
小智 -2
使用带有删除选项的截断命令的简单方法。\033 代表转义字符。
$cat your_filename|tr -d \033 > save_filename
使用以下命令删除所有控制字符
$cat your_filename|tr -d [:cntrl:] > save_filename
希望有帮助
归档时间: |
|
查看次数: |
3378 次 |
最近记录: |