このエントリーをはてなブックマークに追加

screenログをlessやemacsなどで開くとラインフィードやバックスペースなどが含まれているため、文字化けなど発生します。

colコマンドを用いることで、この文字化けの原因となるラインフィードやバックスペースを取り除くことができます。

実際にscreenのログに含まれる文字化けを取り除いてみます。 screenでログを開始した状態で以下のyumコマンドを実行してみました。

$ sudo yum -y install tcpdump

このログファイルをemacsで開くとこのようになっています。

0:user@hostname$ yum ^H^[[K^H^[[K^H^[[K^H^[[Ksudo yum install ^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K^H^[[K-y install tcpdump
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
(省略)
^M  Installing : 14:libpcap-1.4.0-1.20130826g [                             ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [#####                        ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [###########                  ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [#################            ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [#######################      ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [##########################   ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [###########################  ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826g [############################ ] 1/2^M  Installing : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64             1/2 
^M  Installing : 14:tcpdump-4.0.0-3.20090921g [##                           ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [####                         ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [######                       ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [########                     ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [###########                  ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [#############                ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [###############              ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [#################            ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [####################         ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [######################       ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [########################     ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [#########################    ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [##########################   ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [###########################  ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921g [############################ ] 2/2^M  Installing : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64            2/2 
^M  Verifying  : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64             1/2 
^M  Verifying  : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64            2/2 

Installed:
  tcpdump.x86_64 14:4.0.0-3.20090921gitdf3cb4.2.el6                             

Dependency Installed:
  libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6                              

Complete!

とても読めたものではないですね?

yumの後に^Hが入っているのはここで私がバックスペースで文字列を訂正したからです。 その他にも^Mのような記号が入っています。

screenのログはtypescriptというフォーマットで記録されています。 typescriptでは、コンソールに入力されたこのようなコントロールコードまできちんと記録されているため、 実際の操作を後から確認することができます。 その一方で、エディタなどで開く場合は非常に不便です。

一応、catで見ると普通に見れますが、通常コンソールのログは非常に長くなるので、やはりエディタで開きたくなります。

そういうときは、colコマンドを用いることで不要なラインフィードやバックスペースを削除します。

colコマンドは標準入力を受付標準出力に出力しますので、 以下のようなコマンドフォーマットとなります。

$ col < 元のファイル名 > 変換後のファイル名

screenlog.0をscreenlog.0.colに変換する場合は以下の通りです。

$ col < screenlog.0 > screenlog.0.col

これをemacsで開くと以下のようになります。

0;user@c6-min:~$ yumKsudo yum installK-y install tcpdump
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Install Process
Resolving Dependencies
(省略)
  Installing : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64########## ] 1/2
  Installing : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64######### ] 2/2
  Verifying  : 14:libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64             1/2
  Verifying  : 14:tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64            2/2

Installed:
  tcpdump.x86_64 14:4.0.0-3.20090921gitdf3cb4.2.el6

Dependency Installed:
  libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.el6

Complete!



記事一覧へ