2013-10-24 26 views
1

我從遠程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的」,「人的terminfo」,以獲得更多的細節。
我的問題是如何刪除文件中的這些終端控制轉義序列?
非常感謝!

+0

這兩個例子都不能滿足要求。請參閱[能否以編程方式將「使用unix utils將ANSI控制代碼燒寫到文件?」(http://stackoverflow.com/questions/28269278/can-i-programmatically-burn-in-ansi-control-codes-to -a-文件使用UNIX的-utils的/ 28334291#28334291)。 –

回答

2

簡單的方法來去除控制字符的大部分地區是Vim使用下面的命令:

:%s/<escape-key>\[[0-9;]*m/ /g 

Ctrl鍵 + V後面跟上面的<escape-key>字符的esc-key。其他所有內容與鍵盤上的文字鍵相同。

相關問題