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