そのファイルを、現在のメモ帳(Microsoft製テキストエディタ)で開いても文字化けしないように、文字コード変換の必要があります。先週、その方法を、自分なりに見つけ出しました。
Linuxのシェル、bashを使う方法です。
昔のファイルの文字コードを、
「iso-2022-jp」から「UTF-8」に変換する方法については、
⇒ こちらの記事をご覧ください。
文字コード変換対象のファイルは大量にあるため、一つ一つの手作業ではとてもやってられません。そこで、その大量のファイルの文字コードを一括で変換するシェルスクリプトを作りました。
完成したシェルスクリプトのコードは、次のとおりです。
■複数ファイルの文字コード一括変換スクリプト
#!/bin/bash
for myf in ~/kiroku_mail/dai1/*.txt
do
newf=$(basename ${myf})
iconv -f iso-2022-jp -t UTF-8 ${myf} > ~/afterconv/${newf}
done
このスクリプトの中味については、今日の記事では触れません。
スクリプトの中味の説明は、できればまた後日、ブログ記事にしたいと思っています。
今回記事は、そんな専門的なことではなく、もっと一般的な話題です。
何かというと、変数名のタイプミス、スペルミスについてです。
シェルスクリプトに関してはまだ初学者の域を出ないので、スクリプト作成作業は、いろいろと調べながら、勉強しながらの作業でした。
そのように、時間をかけてようやく完成したスクリプトを、いざ実行してみるのですが、エラーが出て動きませんでした。
「おかしいな、なぜ動かない。」
などとぼやきながら、構文に間違いがないか、コマンドの使い方がこれでいいのか、などとあれこれ見直し作業を行いました。
そのように、かなり長い時間、もがき苦しんでいるうちに、
「あっ!これだ。」
というのが見つかりました。
文字コード変換後のファイルを保存する処理を記述した部分、
> ~/afterconv/${newf}
です。
そこに、なんと、タイプミス、スペルミスがありました。
${newf} とすべきところを、
${nwef} としていたのです。
そのようなスペルミスがあれば、スクリプトはまともに動くはずはありませんわね。
構文ミス、使うべきコマンドが適切なのか、などを疑っていたのですが、そんなハイレベルな問題ではありませんでした。単なるタイプミス、スペルミスという、基本的なところで失敗していたのです。
これがVBAだと、変数のタイプミスがあれば指摘してくれる仕組みが備わっています。「変数宣言」という仕組みです。
ところが、シェルスクリプトには「変数宣言」という作業が不要とされている代わりに、変数名の書き間違いの指摘はしてはくれません。
となれば、自分自身の力で、正確な記述をしていくことしか、防止の手段がありません。
手元のキーボードを見ることなく、ディスプレイ画面だけを見ながらのタッチタイピングはできるのですが、タイプミスが多いのが私の大きな欠点です。これからも Ubuntu Linux をコマンド操作で使っていこうとするなら、正確なタイピングが必要となります。うーん、もう一度、タイピングの練習を基礎からやり直す必要があるかな、なんてことを真剣に考えた今日の出来事でした。
ちなみに、上記${nwef}としていたタイプミスの箇所を、${newf}と修正することで、スクリプトはまともに動くようになりました。それにより、すべてのファイルの文字コード変換が、一括、自動で、あっという間に終わりました。
それでは、また次の記事で
■■■■ goosyun ■■■■
最近の「Ubuntu」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事