UTF8のログファイルをiconvを使用してAIX上で開く
投稿者:しんさん 2016/03/19

UTF8のログファイルをiconvを使用してAIX上で開く
AIXの文字コードは、日本語環境ではコードページ943のShift-Jisが使われていることが多いかと思います。
一方で、ミドルウェアなどによってはログファイルなどをUTF-8で出力するものが少なくありません。
こういったUTF-8エンコードのログをIBM-943の環境で、
- コンソール上でログを表示したい
- シェルスクリプト等で正しく取り扱いたい
といった場合、iconvコマンドを使用する事で実現できます。
実行例
例えばUTF-8エンコードのファイル"hoge.log"をコードページ943の環境でmoreページャで開きたい場合は下記のように実行します。
[user@testsv ~]$ iconv -f UTF-8 -t IBM-943 hoge.log |more
活用例
シェルスクリプトの中で活用したいというケースが1番多いと考えます。
コンソール表示の場合、ターミナルソフトウェアの文字コードの設定を一時的に変えてしまえばそれで事足りるケースが多いと考えられるからです。
シェルスクリプトの中でも、
- 通常の監視製品でのログ監視では実現できない監視要件を、シェルスクリプトをジョブやcron等で定期実行することで実現したい。
- レポート等のためにログを加工したいが、文字コードの差異をシェルスクリプト内で吸収したい。
といった具体例が考えられるでしょう。
コンソール表示という観点では、
- オペレーターに手順を渡して実行させたいけど、「文字化けする」と言われないように文字コードを揃えておきたい
といったケースでは実用的ですね。
まとめ
テキスト処理というとPerlやpython等のスクリプト言語を使用して処理を実装する例が多いように思いますが、ちょっとした処理に大層なスクリプトを用意するのは仰々しいなと感じるケースはサーバー運用の中で多くあります。
また、環境の制約によりPerlやpythonの実行環境を用意できないといった
「すでにある物の中で戦わなければならない」
というケースが実運用の中では多々あります。
基本的にサーバーに対してはシステムの機能要件に対して必要なものを中心に環境が構築されていきますので「運用者のための道具」といったものはサーバー設計や構築の中でケアされずにサービスインしてしまうことが、残念ながら少なくありません。
全ての環境がバッテリーインサイドな環境とは限りません。それでも目的を達成し、システムや運用サービスのレベルを維持することがサーバー運用担当者の使命であり、持ち合わせるべきスキルセットやマインドでもあります。
iconvの活用は単なる一例に過ぎませんが、こういった小さな道具をうまく活用して行きたいですね。