我从远程linux计算机上获取了一个日志。它看起来像:
2013-10-23T08:19:05+0300 Last login: Wed Oct 23 08:17:38 EEST 2013 from 10.9.167.55 on pts/0
2013-10-23T08:19:05+0300 Last login: Wed Oct 23 08:19:05 2013 from 10.9.167.55^M
2013-10-23T08:19:07+0300 ^[[?1034h-bash-4.1$ date
2013-10-23T08:19:07+0300 Wed Oct 23 08:19:07 EEST 2013
2013-10-23T08:19:08+0300 -bash-4.1$ ls
2013-10-23T08:19:08+0300 ^[[0m^[[01;34m99^[[0m #avail.info ^[[01;34mgmoTemp^[[0m raml21.dtd SNMP4JTestAgentBC.cfg
2013-10-23T08:19:08+0300 an_mainHost_localhost_20131023081654000136.xml #avail.info~ gsh.txt ^[[01;34mresults^[[0m
2013-10-23T08:19:09+0300 ^[[m-bash-4.1$ exit
2013-10-23T08:19:09+0300 logout
但它应该是:
Last login: Wed Oct 23 08:17:38 EEST 2013 from 10.9.167.55 on pts/0
Last login: Wed Oct 23 08:19:05 2013 from 10.9.167.55
-bash-4.1$ date
Wed Oct 23 08:19:07 EEST 2013
-bash-4.1$ ls
99 #avail.info gmoTemp raml21.dtd SNMP4JTestAgentBC.cfg
an_mainHost_localhost_20131023081654000136.xml #avail.info~ gsh.txt results
-bash-4.1$ exit
logout
凌乱的代码是终端控制转义序列,您可以使用命令“infocmp xterm”和“man terminfo”来获取更多详细信息。
我的问题是如何删除文件中的这些终端控制转义序列?
非常感谢!
答案 0 :(得分:2)
删除控制字符大多数部分的简单方法是在vim中使用以下命令:
:%s/<escape-key>\[[0-9;]*m/ /g
按 Ctrl + V ,然后按esc键,输入上面的<escape-key>
字符。其他所有内容都与键盘中的字面键相同。
答案 1 :(得分:1)
我使用管道或像这样的直接sed
sed 's/[^[:print:]]\[[^a-zA-Z]*[a-zA-Z]//g' YourFile
答案 2 :(得分:0)