bashで日本語を処理してみる。。Linuxだと文字化け多発。。やっぱCygwinや!
仕事で作成している日報(思いっきり日本語)がある。これを月報化するときにシェルを書いて楽して纏めてみようと思い立ったのがそもそもの発端。
まずWordの文章を一括テキスト変換することにした。
使ったソフトは
---
word2txt.vbs -- by i16 2002/10/01
Word文書ファイルをvbsアイコンにドロップするとtxtファイルが出来ます
(複数ファイルを同時にドロップして一気に作業することも可能)
(MS Wordがインストールされている必要があります)
http://i16.jp
---
Wordをword2txt.vbsにドラッグアンドドロップする。
これでTEXTになる。ここまではすぐにできた。
けど、この後が日本語の文字化けとの戦いだった。
word2txtでTEXT化された日本語は、
文字コード:SJIS
改行コード:CR+LF
これをWinSCPで仮想OSのLinux(CentOS6.4)にコピーして、そこでBASHでシェルを書いて
ルールを決めて集計をしてみたところ、文字化けが多発。。。
例えば、
---
文字化け例
侮ヲ ⇒ 表示
瑞ソ ⇒ 申請
狽ノ ⇒ 能
告ャ ⇒ 構成
狽ィ ⇒ 能お
狽 ⇒ 能
狽ゥ ⇒ 能か
嵐閧ナ ⇒ 予定で
---
同じ日本語とは思えないほど意味不明な文字になる。どこでなっているのか全く分からなかった。。LinuxのLANGを「export LANG=ja_JP.UTF-8」にしてみたり、TeraTermの受信、送信をSJISにしたりUTF-8にしてみたが改善は見られなかった。。おいおいマジですか。。。日本語おかしくなっちゃうのは報告書として致命的で痛すぎる。。。愚直にコツコツやるしかないんかい!とあきらめかけたけれども。そこで思い立ったのは、
WindowsのCygwinでBASHすればいいじゃん!ってこと。
これが当たりでしたね~Cygwinおっそいけど、文字化けしないのが一番。
Cygwinで処理するには、
word2txt.vbs で処理したTEXTを
---
[ソフト名] ZiiDetector 1.0.3
[ 作者 ] oibore
[動作環境] Windows/XP/Vista/7 32bit/64bit
[必要環境] Microsoft .NET Framework 3.5以上
[開発環境] WindowsXP SP3(x86)
[ 連絡先 ] oibore@gmail.com
[配布転載] ご連絡ください
[ 要望等 ] ご連絡ください
---
ZiiDetectorというソフトで
文字コード:UTF-8(BOM無)
改行コード:LF(一応Unix的にそろえた)
で統一して、Cygwinフォルダにブッコム。
そこでBASHで処理すると、あら不思議日本語文字化けせずにきれいに処理できる!
※一応Cygwinの日本語環境は
「Cygwin 1.7.9 で日本語を使うための覚書」を見て
---
Cygwin を新しくインストールすると、画面に Cygwin Terminal という Cygwin を起動するためのアイコンが追加されます。これの実体は mintty.exe というターミナルエミュレータです。
Cygwin Terminal のアイコンをクリックし Cygwin を起動する。
Cygwin の画面上で右クリックし、表示されるメニューで Options を選ぶ
Text の設定をクリックし、 Font を日本語が表示できるものにする。
例えば Select から MS ゴシック を選ぶ。 フォントのサイズは好きなものに設定してください。
Locale を ja_JP に設定、Character set を UTF-8 に設定する。
---
はやりました。
これで、文字化けせずにガッツリいい感じで月報に纏められた==超うれC