Как удалить управляющие последовательности терминала в файле?

Я получил журнал с удаленного компьютера 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" для получения более подробной информации.
У меня вопрос, как я могу удалить эти управляющие последовательности терминала в файле?
Большое спасибо!

3 ответа

Решение

Я решил эту проблему, используя множество регулярных выражений в соответствии с http://invisible-island.net/xterm/ctlseqs/ctlseqs.html

Я использую трубу или прямой седь, как это

sed 's/[^[:print:]]\[[^a-zA-Z]*[a-zA-Z]//g' YourFile

Простой способ удалить большинство частей управляющего символа - использовать команду ниже в vim:

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

Нажмите Ctrl+V, а затем клавишу Esc для <escape-key> персонаж выше. Все остальное - такая же буквенная клавиша, как и у вашей клавиатуры.

Другие вопросы по тегам