Windowsで出力されるShift_JISのログをCygwinのtailコマンドで監視したい。
しかし、文字化けしてしまう。
この様な場合の対処方法です。
$ uname -a CYGWIN_NT-10.0 WINPC 3.1.5(0.340/5/3) 2020-06-01 08:59 x86_64 Cygwin
iconvコマンドは文字コードを変換するコマンドになります。
バッファリングされてしまうので以下のように記述します。
tail -F ログファイル名 | while read L do echo $L | iconv -f SJIS -t UTF-8 done
一行で書くと以下のようになります。
tail -F ログファイル名.txt | while read L; do echo $L | iconv -f SJIS -t UTF-8; done
Cygwinの場合は、nkfコマンドがないのでソースからコンパイルして使用します。
nkfの入手とコンパイルは以下の記事を参考にしてください。
nkfコマンドを使った場合は、以下のようになります。
文字コードは自動判別するので、以下の記述で動作すると思います。
tail -F ログファイル名 | nkf -u
オプションの -u はバッファリングしない指定となります。
文字コードを明示的に指定する場合は、以下のようになります。
tail -F ログファイル名 | nkf -u -S -w
以上、シフトJISのログファイルをUTF-8に変換して表示する方法でした。