Windowsでawkを便利に使う-3

awkを使って欲しい情報だけを抽出する超基本的なサンプルです。

最初に7列(カラム)目が”北海道” にマッチした場合に、必要な列を出力するサンプルをやってみました。

同様に、7列(カラム)目が”京都府”にマッチした場合に、必要な列を出力するサンプルに修正してみました。

大きなデータを扱う場合は、たったこれだけでもawkの便利さを実感出来るものです。なにしろちょっとしたスクリプトですが、12万行を2秒かからずに処理しちゃってますからね。

実際の処理です。$7が「”京都府”」と等しければ、$3と$7と$8をPRINTする命令を記していますawkにはフィールド番号という概念があり、左側から$1、$2と数えます。この概念のお陰で容易にCSV形式のファイルを扱うことが出来ます。

参考に付け加えれると、$0は行全体(1レコード)を指します。

まだソースコードうんぬんという程のことではありませんが一応記しておきます。

徐々にもっと実用的なサンプルを実行してみたいと思います。

「じゃあいつ移行すればいいの?」「今すぐです」

windows_xp最近、ようやくMicrosoftがWindows XPのサポート終了を積極的にアナウンスする様になってきました。

「じゃあいつ移行すればいいの?」「今すぐです」――日本マイクロソフト、Windows XPからの移行呼びかけ- 最新ニュース|MSN トピックス

私はWindows NT Server 4.0がサポート終了になる時にこれと似たイベントを経験しました。今回のXPとの大きな違いは、NTの場合は「サーバーOS」なので、たとえサーバーがそれ1台でも、その配下で稼働しているクライアントPCが100台あれば100台に影響を与えるし、ドメイン構成によっては複数のサーバーが信頼関係によって連携していたりすると単一ドメインでは済まず広範囲に影響を与えるものでした。

また、NTドメインと、Windows 2000 ServerのActiveDirectoryの概念の違いから、ADへの移行に伴ういくつかの課題をクリアする事が重要となり、「NTマイグレーション」という言葉が当時流行語の様に語られたものです。企業の多くはこのNTマイグレーションに追われた訳です。

今回のXPのサポート終了も、NTのサポート終了も似たような騒動ですが、本質的な部分でかなり違いがあります。共通点は同じMicrosoft社のWindows製品だということ位です。

XPのサポート終了に伴い、普通に考えればOSをWindows7もしくはWindows8にアップグレードする事になります。しかし多くの場合はハードウェアがスペック的に厳しいという現実をつきつけられます。よってPC本体も更新というケースが大半を占めるでしょう。更にOffice製品も恐らくMicrosoft Office 2003辺りを使っていると思うのでこれもサポート終了でバージョンアップを検討せざるを得ません。

ここまでを考慮すると、新しくPCを買い換えた方がトータルで安いし処理速度の低下なども防げると言う結論にたどり着きます。日本市場の場合はOffice製品をバンドルして販売しているPCの方がOffice製品単体で購入するよりも割安なのでOffice込みで購入という事になるでしょう。

続きを読む

Visual Studio 2012 Update 2正式リリース

S-Factoryとしては、Windows用アプリの開発にはVS2010をメインで使っており、VS2012は積極的には使っていません。でもこうやって着実にアップデートが進んでいるようです。

Windowsストア向けのアプリを開発する人にはVS2012は必要だと思いますので、追従していくしかないですね。こういう情報が入ってくると、そろそろWindowsストアの事も調べるべきなのかなぁと思わざるを得ません。

Visual Studio 2012 Update 2正式リリース

Windowsでawkを便利に使う-2

awkをWindowsで使う為の環境づくりを動画でYouTubeにアップロードしました。

郵便番号データ(CSV)をダウンロードして、それをawkで処理するサンプルを行なってみます。

ファイル容量で言えばいまどき大した大きさではありませんが、郵便番号データ全国版はテキストファイルで12万行以上ありますので結構なデータです。実際、一昔前のPCで、Excel等の表計算アプリに取り込むとかなり処理が重くなってしまうものです。ちなみにExcel2007よりも古いバージョンでは6万数千行までしか読み込むことが出来ません。

  1. BEGINでFS(フィールドセパレータ)をカンマだと定義する
  2. BEGINでOFS(アウトプットフィールドセパレータ)をカンマだと定義する
  3. 欲しい情報が含まれる列だけ表示させてみる
    $1、$2、$3、という感じで左側からカンマで区切られた列を数えます。

1は、読み込むファイルの区切り文字を指定します。郵便番号データはカンマ「,」で区切られていますのでFS=”,”となります。

2.は、awkが出力する際の区切り文字を指定します。区切り文字をここで変更すれば、カンマ区切りのデータを”:”区切りにしたり、TAB区切りに加工したりと任意に指定出来ます。ここの例では同じカンマ区切りにしています。

3.は実際の処理です。$3と$7と$8をPRINTする命令を記しています。awkにはフィールド番号という概念があり、左側から$1、$2と数えます。この概念のお陰で容易にCSV形式のファイルを扱うことが出来ます。

参考に付け加えると、$0は行全体(1レコード)を指します。
まだソースコードうんぬんという程のことではありませんが一応記しておきます。

Windowsでawkを便利に使う-1

awkをWindowsで使う為の環境づくりを動画でYouTubeにアップロードしました。

聞きながら見るという方法が一番無駄がないのですが、マイクの音質が悪いのでコメントを字幕として設定しています。やっている事が良く分からない場合は字幕を有効にしてみて下さい。

正直に書くブログ」でも記していますが、awkをWindowsで使える状態にして置くと、仕事の現場においては何かと便利です。特にCSVデータを扱う人にとってはかなり便利なツールで有ると言えます。

おーくの友だち」というユーティリティを使うと非常にWindowsライクな操作になるので、このユーティリティと、実際に処理をするgawk.exeというプログラムをダウンロードしてセットアップします。

設定の手順の中で、INIファイルを直接編集して絶対パスを相対パスに書き換えている部分があります。おそらくココの部分が壁になるとは思いますが、「おーくの友だち」を作っている開発者さんに改修していただけたら一番良いのになと思っています。